InputMethodManager Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini.
[Android.Runtime.Register("android/view/inputmethod/InputMethodManager", DoNotGenerateAcw=true)]
public sealed class InputMethodManager : Java.Lang.Object
[<Android.Runtime.Register("android/view/inputmethod/InputMethodManager", DoNotGenerateAcw=true)>]
type InputMethodManager = class
inherit Object
- Warisan
- Atribut
Keterangan
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini.
Topik yang dibahas di sini: <ol><li>Gambaran Umum<Arsitektur li>Aplikasi<li>Metode<Input li>Keamanan</ol>
"Gambaran Umum Arsitektur"><h3>Gambaran Umum< Arsitektur/h3>
Ada tiga pihak utama yang terlibat dalam arsitektur kerangka kerja metode input (IMF):
<ul><li> Manajer <>metode input yang kuat</kuat> seperti yang dinyatakan oleh kelas ini adalah titik pusat sistem yang mengelola interaksi antara semua bagian lainnya. Ini dinyatakan sebagai API sisi klien di sini yang ada di setiap konteks aplikasi dan berkomunikasi dengan layanan sistem global yang mengelola interaksi di semua proses. <li> Metode <input yang kuat>(IME)</kuat> mengimplementasikan model interaksi tertentu yang memungkinkan pengguna menghasilkan teks. Sistem mengikat ke metode input saat ini yang sedang digunakan, menyebabkannya dibuat dan dijalankan, dan memberi tahunya kapan harus menyembunyikan dan menunjukkan UI-nya. Hanya satu IME yang berjalan pada satu waktu. <li> Beberapa <aplikasi> klien yang kuat</arbitrase kuat> dengan manajer metode input untuk fokus input dan kontrol atas status IME. Hanya satu klien seperti itu yang pernah aktif (bekerja dengan IME) pada satu waktu. </ul>
"Aplikasi"><h3>Aplikasi</h3>
Dalam kebanyakan kasus, aplikasi yang menggunakan standar android.widget.TextView atau subkelasnya akan memiliki sedikit yang perlu mereka lakukan untuk bekerja dengan baik dengan metode input lunak. Hal utama yang perlu Anda waspadai adalah:
<ul><li> Atur android.R.attr#inputType dengan benar dalam tampilan teks yang dapat diedit, sehingga metode input akan memiliki konteks yang cukup untuk membantu pengguna memasukkan teks ke dalamnya.
<li> Berurusan dengan baik dengan kehilangan ruang layar ketika metode input ditampilkan. Idealnya aplikasi harus menangani jendelanya yang diubah ukurannya lebih kecil, tetapi dapat mengandalkan sistem yang melakukan panning jendela jika diperlukan. Anda harus mengatur android.R.attr#windowSoftInputMode atribut pada aktivitas Anda atau nilai yang sesuai pada jendela yang Anda buat untuk membantu sistem menentukan apakah akan menggeser atau mengubah ukuran (akan mencoba menentukan ini secara otomatis tetapi mungkin salah).
<li> Anda juga dapat mengontrol status input lunak pilihan (terbuka, tertutup, dll) untuk jendela Anda menggunakan atribut yang sama android.R.attr#windowSoftInputMode .
</ul>
Kontrol yang lebih halus tersedia melalui API di sini untuk berinteraksi langsung dengan IMF dan IME -- baik menampilkan atau menyembunyikan area input, memungkinkan pengguna memilih metode input, dll.
Bagi orang-orang langka di antara kita yang menulis editor teks mereka sendiri, Anda harus menerapkan android.view.View#onCreateInputConnection untuk mengembalikan instans baru antarmuka Anda sendiri InputConnection yang memungkinkan IME berinteraksi dengan editor Anda.
"InputMethods"><h3>Input Methods</h3>
Metode input (IME) diimplementasikan sebagai android.app.Service, biasanya berasal dari android.inputmethodservice.InputMethodService. Ini harus menyediakan antarmuka inti InputMethod , meskipun ini biasanya ditangani oleh android.inputmethodservice.InputMethodService dan implementor hanya perlu berurusan dengan API tingkat yang lebih tinggi di sana.
android.inputmethodservice.InputMethodService Lihat kelas untuk informasi selengkapnya tentang menerapkan IMEs.
"Keamanan"><h3>Keamanan</h3>
Ada banyak masalah keamanan yang terkait dengan metode input, karena pada dasarnya mereka memiliki kebebasan untuk sepenuhnya mendorong UI dan memantau semua yang dimasukkan pengguna. Kerangka kerja metode input Android juga memungkinkan IM pihak ketiga yang segan- segan, jadi perhatian harus dilakukan untuk membatasi pilihan dan interaksi mereka.
Berikut adalah beberapa poin penting tentang arsitektur keamanan di balik IMF:
<ul><li>
Hanya sistem yang diizinkan untuk langsung mengakses antarmuka IME InputMethod , melalui android.Manifest.permission#BIND_INPUT_METHOD izin. Ini diberlakukan dalam sistem dengan tidak mengikat ke layanan metode input yang tidak memerlukan izin ini, sehingga sistem dapat menjamin tidak ada klien lain yang tidak tepercaya mengakses metode input saat ini di luar kontrolnya.
<li>
Mungkin ada banyak proses klien IMF, tetapi hanya satu yang mungkin aktif pada satu waktu. Klien yang tidak aktif tidak dapat berinteraksi dengan bagian utama IMF melalui mekanisme yang dijelaskan di bawah ini.
<li>
Klien metode input hanya diberikan akses ke antarmukanya InputMethodSession . Satu instans antarmuka ini dibuat untuk setiap klien, dan hanya panggilan dari sesi yang terkait dengan klien aktif yang akan diproses oleh IME saat ini. Ini diberlakukan oleh android.inputmethodservice.AbstractInputMethodService untuk IMEs normal, tetapi harus secara eksplisit ditangani oleh IME yang menyesuaikan implementasi mentah InputMethodSession .
<li>
Hanya klien InputConnection aktif yang akan menerima operasi. IMF memberi tahu setiap proses klien apakah itu aktif, dan kerangka kerja memberlakukan bahwa dalam proses yang tidak aktif memanggil ke InputConnection saat ini akan diabaikan. Ini memastikan bahwa IME saat ini hanya dapat mengirimkan peristiwa dan pengeditan teks ke UI yang dilihat pengguna sebagai sedang dalam fokus.
<li>
IME tidak pernah dapat berinteraksi saat InputConnection layar nonaktif. Ini diberlakukan dengan membuat semua klien tidak aktif saat layar nonaktif, dan mencegah IMEs yang buruk mengemudikan UI ketika pengguna tidak dapat menyadari perilakunya.
<li>
Aplikasi klien dapat meminta sistem membiarkan pengguna memilih IME baru, tetapi tidak dapat beralih secara terprogram ke satu itu sendiri. Ini menghindari aplikasi berbahaya dari mengalihkan pengguna ke IME mereka sendiri, yang tetap berjalan ketika pengguna menavigasi pergi ke aplikasi lain. IME, di sisi lain, <mereka>diizinkan<> untuk secara terprogram mengalihkan sistem ke IME lain, karena sudah memiliki kontrol penuh atas input pengguna.
<li>
Pengguna harus secara eksplisit mengaktifkan IME baru dalam pengaturan sebelum mereka dapat beralih ke pengaturan tersebut, untuk mengonfirmasi dengan sistem bahwa mereka tahu tentang hal itu dan ingin membuatnya tersedia untuk digunakan.
</ul>
Jika aplikasi Anda menargetkan Android 11 (API level 30) atau yang lebih tinggi, metode di kelas ini masing-masing mengembalikan hasil yang difilter berdasarkan aturan visibilitas paket, kecuali untuk IME yang saat ini terhubung. Aplikasi yang memiliki kueri untuk InputMethod#SERVICE_INTERFACE melihat semua IMEs.
Java dokumentasi untuk android.view.inputmethod.InputMethodManager.
Bagian dari halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Android Open Source Project dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Creative Commons 2.5 Lisensi Atribusi.
Bidang
| Nama | Deskripsi |
|---|---|
| HandwritingDelegateFlagHomeDelegatorAllowed |
Kedaluwarsa.
Bendera yang menunjukkan bahwa tampilan dari layar beranda default ( |
| ShowForced |
Bendera untuk |
| ShowImplicit |
Kedaluwarsa.
Bendera untuk |
Properti
| Nama | Deskripsi |
|---|---|
| Class |
Mengembalikan kelas runtime dari . |
| CurrentInputMethodInfo |
Mengembalikan |
| CurrentInputMethodSubtype |
Mengembalikan subjenis metode input saat ini. |
| EnabledInputMethodList |
Mengembalikan daftar metode input yang diaktifkan. |
| Handle |
Handel ke instans Android yang mendasar. (Diperoleh dari Object) |
| InputMethodList |
Mengembalikan daftar metode input yang diinstal. |
| IsAcceptingText |
Mengembalikan |
| IsActive |
Kembalikan |
| IsConnectionlessStylusHandwritingAvailable |
Mengembalikan |
| IsFullscreenMode |
Memungkinkan Anda menemukan apakah metode input terlampir berjalan dalam mode layar penuh. |
| IsInputMethodSuppressingSpellChecker |
Kembalikan |
| IsStylusHandwritingAvailable |
Mengembalikan |
| JniIdentityHashCode |
Mendapatkan kode hash identitas yang ditetapkan ke Java peer ini oleh runtime interop. (Diperoleh dari Object) |
| JniManagedPeerState |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| JniPeerMembers |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. |
| LastInputMethodSubtype |
Mengembalikan yang terakhir digunakan |
| PeerReference |
Mendapatkan referensi objek JNI untuk peer Java ini. (Diperoleh dari Object) |
| ShortcutInputMethodsAndSubtypes |
Mengembalikan peta semua info metode input pintasan dan subjenisnya. |
| ThresholdClass |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. (Diperoleh dari Object) |
| ThresholdType |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. (Diperoleh dari Object) |
Metode
| Nama | Deskripsi |
|---|---|
| AcceptStylusHandwritingDelegation(View, String, HandwritingDelegateFlag, IExecutor, IConsumer) |
Menerima dan memulai sesi tulisan tangan stylus pada tampilan delegasi, jika delegasi inisiasi tulisan tangan sebelumnya diminta menggunakan |
| AcceptStylusHandwritingDelegation(View, String, IExecutor, IConsumer) |
Menerima dan memulai sesi tulisan tangan stylus pada tampilan delegasi, jika delegasi inisiasi tulisan tangan sebelumnya diminta menggunakan |
| AcceptStylusHandwritingDelegation(View, String) |
Menerima dan memulai sesi tulisan tangan stylus pada tampilan delegasi, jika delegasi inisiasi tulisan tangan sebelumnya diminta menggunakan |
| AcceptStylusHandwritingDelegation(View) |
Menerima dan memulai sesi tulisan tangan stylus pada tampilan delegasi, jika delegasi inisiasi tulisan tangan sebelumnya diminta menggunakan |
| Clone() |
Membuat dan mengembalikan salinan objek ini. (Diperoleh dari Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| DispatchKeyEventFromInputMethod(View, KeyEvent) |
Menyediakan implementasi |
| DisplayCompletions(View, CompletionInfo[]) | |
| Dispose() |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| Dispose(Boolean) |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| DisposeUnlessReferenced() |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| Equals(Object) |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
| FromContext(Context) |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. |
| GetEnabledInputMethodSubtypeList(InputMethodInfo, Boolean) |
Mengembalikan daftar subjenis metode input yang diaktifkan untuk info metode input yang ditentukan. |
| GetHashCode() |
Mengembalikan nilai kode hash untuk objek . (Diperoleh dari Object) |
| HideSoftInputFromInputMethod(IBinder, HideSoftInputFlags) |
Tutup/sembunyikan area input lunak metode input, sehingga pengguna tidak lagi melihatnya atau dapat berinteraksi dengannya. |
| HideSoftInputFromWindow(IBinder, HideSoftInputFlags, ResultReceiver) |
Minta untuk menyembunyikan jendela input lunak dari konteks jendela yang saat ini menerima input. |
| HideSoftInputFromWindow(IBinder, HideSoftInputFlags) |
Minta untuk menyembunyikan jendela input lunak dari konteks jendela yang saat ini menerima input. |
| HideStatusIcon(IBinder) |
Anggota ini tidak digunakan lagi. |
| InvalidateInput(View) |
Memberikan petunjuk kepada sistem bahwa teks yang terkait dengan diperbarui oleh |
| InvokeIsActive(View) |
Mengembalikan |
| IsWatchingCursor(View) |
Kedaluwarsa.
Kembalikan true jika metode input saat ini ingin menonton lokasi kursor editor input di jendelanya. |
| JavaFinalize() |
Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek. (Diperoleh dari Object) |
| Notify() |
Membangunkan satu utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| NotifyAll() |
Membangunkan semua utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| PrepareStylusHandwritingDelegation(View, String) |
Menyiapkan delegasi memulai sesi tulisan tangan stylus ke editor yang berbeda di jendela yang sama atau berbeda dalam paket yang berbeda dari tampilan di mana goresan tulisan tangan awal terdeteksi. |
| PrepareStylusHandwritingDelegation(View) |
Menyiapkan delegasi memulai sesi tulisan tangan stylus ke editor yang berbeda di jendela yang sama atau berbeda dari tampilan di mana goresan tulisan tangan awal terdeteksi. |
| RestartInput(View) |
Jika metode input saat ini terhubung ke tampilan yang diberikan, mulai ulang dengan konten barunya. |
| SendAppPrivateCommand(View, String, Bundle) |
Panggil |
| SetAdditionalInputMethodSubtypes(String, InputMethodSubtype[]) |
Atur subjenis metode input tambahan. |
| SetCurrentInputMethodSubtype(InputMethodSubtype) |
Beralih ke subjenis metode input baru dari metode input saat ini. |
| SetExplicitlyEnabledInputMethodSubtypes(String, Int32[]) |
Memperbarui daftar yang diaktifkan |
| SetHandle(IntPtr, JniHandleOwnership) |
Mengatur properti Handle. (Diperoleh dari Object) |
| SetInputMethod(IBinder, String) |
Paksa beralih ke komponen metode input baru. |
| SetInputMethodAndSubtype(IBinder, String, InputMethodSubtype) |
Paksa beralih ke metode input dan subjenis baru. |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| ShouldOfferSwitchingToNextInputMethod(IBinder) |
Mengembalikan true jika IME saat ini perlu menawarkan cara kepada pengguna untuk beralih ke metode input berikutnya (misalnya. |
| ShowInputMethodAndSubtypeEnabler(String) |
Perlihatkan pengaturan untuk mengaktifkan subjenis metode input yang ditentukan. |
| ShowInputMethodPicker() |
Tampilkan jendela popup pemilih IME. |
| ShowSoftInput(View, ShowFlags, ResultReceiver) |
Secara eksplisit meminta agar area input lunak metode input saat ini ditampilkan kepada pengguna, jika diperlukan. |
| ShowSoftInput(View, ShowFlags) |
Sinonim untuk |
| ShowSoftInputFromInputMethod(IBinder, ShowFlags) |
Tampilkan area input lunak metode input, sehingga pengguna melihat jendela metode input dan dapat berinteraksi dengannya. |
| ShowStatusIcon(IBinder, String, Int32) |
Anggota ini tidak digunakan lagi. |
| StartConnectionlessStylusHandwriting(View, CursorAnchorInfo, IExecutor, IConnectionlessHandwritingCallback) |
Memulai sesi tulisan tangan stylus tanpa koneksi. |
| StartConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, IExecutor, IConnectionlessHandwritingCallback) |
Memulai sesi tulisan tangan stylus tanpa koneksi (lihat |
| StartConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, String, IExecutor, IConnectionlessHandwritingCallback) |
Memulai sesi tulisan tangan stylus tanpa koneksi (lihat |
| StartStylusHandwriting(View) |
Mulai sesi tulisan tangan stylus. |
| SwitchToLastInputMethod(IBinder) |
Beralih paksa ke metode input dan subjenis yang terakhir digunakan. |
| SwitchToNextInputMethod(IBinder, Boolean) |
Beralih paksa ke metode input dan subjenis berikutnya. |
| ToArray<T>() |
Membuat array terkelola dari pembungkus array Java ini. (Diperoleh dari Object) |
| ToggleSoftInput(ShowFlags, HideSoftInputFlags) |
Metode ini mengalihkan tampilan jendela metode input. |
| ToggleSoftInputFromWindow(IBinder, ShowSoftInputFlags, HideSoftInputFlags) |
Metode ini mengalihkan tampilan jendela metode input. |
| ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
| UnregisterFromRuntime() |
Membatalkan pendaftaran peer Java ini dari runtime interop. (Diperoleh dari Object) |
| UpdateCursor(View, Int32, Int32, Int32, Int32) |
Kedaluwarsa.
Laporkan lokasi kursor saat ini di jendelanya. |
| UpdateCursorAnchorInfo(View, CursorAnchorInfo) |
Laporkan perubahan posisi titik penyisipan teks dan/atau karakter dalam string komposisi. |
| UpdateExtractedText(View, Int32, ExtractedText) | |
| UpdateSelection(View, Int32, Int32, Int32, Int32) |
Laporkan rentang pilihan saat ini. |
| ViewClicked(View) |
Beri tahu peristiwa saat pengguna mengetuk atau mengklik tampilan teks. |
| Wait() |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>. (Diperoleh dari Object) |
| Wait(Int64, Int32) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
| Wait(Int64) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IJavaPeerable.Disposed() |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| IJavaPeerable.Finalized() |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. (Diperoleh dari JavaObject) |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Mendapatkan nama JNI dari jenis instans |
| JavaAs<TResult>(IJavaPeerable) |
Cobalah untuk memaksa |
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Android. |
| JavaCast<TResult>(IJavaObject) |
API sistem pusat ke arsitektur kerangka kerja metode input (IMF) secara keseluruhan, yang mengaitkan interaksi antara aplikasi dan metode input saat ini. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |