InputMethodManager Classe

Definizione

API di sistema centrale per l'architettura generale del framework del metodo di input (IMF), che arbitra l'interazione tra le applicazioni e il metodo di input corrente.

[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
Ereditarietà
InputMethodManager
Attributi

Commenti

API di sistema centrale per l'architettura generale del framework del metodo di input (IMF), che arbitra l'interazione tra le applicazioni e il metodo di input corrente.

Argomenti trattati qui: <Ol><li Architecture Overview>li<Applications>li<Input Methods>li<>Security</ol>

"ArchitectureOverview"><h3 Architecture Overview>/h3<>

Nell'architettura del framework del metodo di input (IMF) sono coinvolte tre parti principali:

<ul><li> Il <gestore> del metodo di input sicuro</forte> espresso da questa classe è il punto centrale del sistema che gestisce l'interazione tra tutte le altre parti. Viene espressa come API lato client presente in ogni contesto dell'applicazione e comunica con un servizio di sistema globale che gestisce l'interazione tra tutti i processi. <li> Un <metodo di input sicuro>(IME)</strong> implementa un particolare modello di interazione che consente all'utente di generare testo. Il sistema viene associato al metodo di input corrente in uso, causandone la creazione e l'esecuzione e indica quando nascondere e visualizzare l'interfaccia utente. Un solo IME è in esecuzione alla volta. <li Multiple strong client applications/strong arbitrate with the input method manager for input focus and control over the state of the IME.li> Multiple <strong>client applications</strong> arbitrate with the input method manager for input focus and control over the state of the IME. Solo un client di questo tipo è sempre attivo (lavorando con l'IME) alla volta. </ul>

"Applications"><h3>Applications</h3>

Nella maggior parte dei casi, le applicazioni che usano lo standard android.widget.TextView o le relative sottoclassi avranno poco da fare per funzionare bene con i metodi di input soft. Le cose principali di cui è necessario tenere conto sono:

<ul><li> Impostare correttamente android.R.attr#inputType nelle visualizzazioni di testo modificabili, in modo che il metodo di input abbia un contesto sufficiente per aiutare l'utente a immettervi testo. <li> Consente di perdere spazio sullo schermo quando viene visualizzato il metodo di input. Idealmente un'applicazione deve gestire il ridimensionamento della finestra, ma può basarsi sul sistema che esegue la panoramica della finestra, se necessario. È consigliabile impostare l'attributo nell'attività android.R.attr#windowSoftInputMode o i valori corrispondenti nelle finestre create per aiutare il sistema a determinare se eseguire la panoramica o il ridimensionamento (tenterà di determinarlo automaticamente, ma potrebbe verificarsi un errore). <li> È anche possibile controllare lo stato di input soft preferito (aperto, chiuso e così via) per la finestra usando lo stesso android.R.attr#windowSoftInputMode attributo. </ul>

Un controllo più granulare è disponibile tramite le API qui per interagire direttamente con il FMI e il relativo IME, mostrando o nascondendo l'area di input, consentendo all'utente di selezionare un metodo di input e così via.

Per le rare persone tra noi che scrivono i propri editor di testo, è necessario implementare android.view.View#onCreateInputConnection per restituire una nuova istanza della propria InputConnection interfaccia consentendo all'IME di interagire con l'editor.

"InputMethods"><h3>Metodi< di input/h3>

Un metodo di input (IME) viene implementato come , android.app.Servicein genere derivando da android.inputmethodservice.InputMethodService. Deve fornire l'interfaccia principale InputMethod , anche se questo viene normalmente gestito dagli android.inputmethodservice.InputMethodService implementatori e dovrà gestire solo l'API di livello superiore.

Per altre informazioni sull'implementazione di IMEs, vedere la android.inputmethodservice.InputMethodService classe .

"Sicurezza"><h3>Sicurezza</h3>

Ci sono molti problemi di sicurezza associati ai metodi di input, poiché essenzialmente hanno la libertà di guidare completamente l'interfaccia utente e monitorare tutto ciò che l'utente entra. Il framework del metodo di input Android consente anche messaggistica istantanea arbitraria di terze parti, quindi è necessario prestare attenzione a limitare la selezione e le interazioni.

Ecco alcuni punti chiave sull'architettura di sicurezza alla base del FMI:

<ul><li>

Solo il sistema può accedere direttamente all'interfaccia di InputMethod un IME tramite l'autorizzazione android.Manifest.permission#BIND_INPUT_METHOD . Questa operazione viene applicata nel sistema non eseguendo l'associazione a un servizio del metodo di input che non richiede questa autorizzazione, pertanto il sistema può garantire che nessun altro client non attendibile acceda al metodo di input corrente al di fuori del relativo controllo.

<li>

Ci possono essere molti processi client del FMI, ma solo uno può essere attivo alla volta. I client inattivi non possono interagire con parti chiave del FMI tramite i meccanismi descritti di seguito.

<li>

Ai client di un metodo di input viene concesso l'accesso solo alla relativa InputMethodSession interfaccia. Viene creata un'istanza di questa interfaccia per ogni client e solo le chiamate dalla sessione associata al client attivo verranno elaborate dall'IME corrente. Questa operazione viene applicata da android.inputmethodservice.AbstractInputMethodService per le normali messaggistica istantanea, ma deve essere gestita in modo esplicito da un IME che sta personalizzando l'implementazione non elaborata InputMethodSession .

<li>

Solo il client InputConnection attivo accetterà le operazioni. L'FMI indica a ogni processo client se è attivo e il framework impone che le chiamate inattive a InputConnection corrente verranno ignorate. In questo modo, l'IME corrente può recapitare solo gli eventi e le modifiche di testo all'interfaccia utente che l'utente vede come attivo.

<li>

Un IME non può mai interagire con un InputConnection mentre lo schermo è spento. Questa operazione viene applicata rendendo inattivi tutti i client mentre lo schermo è spento e impedisce agli imes non valido di guidare l'interfaccia utente quando l'utente non è in grado di riconoscerne il comportamento.

<li>

Un'applicazione client può chiedere che il sistema consenti all'utente di selezionare un nuovo IME, ma non può passare a livello di codice a se stesso. In questo modo si evita che le applicazioni dannose passino all'IME dell'utente, che rimane in esecuzione quando l'utente si sposta da un'altra applicazione. Un IME, d'altra parte, <em>è< autorizzato a> passare a livello di codice il sistema a un altro IME, poiché ha già il controllo completo dell'input dell'utente.

<li>

L'utente deve abilitare in modo esplicito un nuovo IME nelle impostazioni prima di poterlo passare, per confermare con il sistema che lo conosce e vuole renderlo disponibile per l'uso.

</ul>

Se l'app è destinata ad Android 11 (livello API 30) o versione successiva, i metodi in questa classe restituiscono un risultato filtrato in base alle regole di visibilità del pacchetto, ad eccezione dell'IME attualmente connesso. Le app che hanno una query per visualizzare InputMethod#SERVICE_INTERFACE tutti gli IMEs.

Documentazione java per android.view.inputmethod.InputMethodManager.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Campi

Nome Descrizione
HandwritingDelegateFlagHomeDelegatorAllowed
Obsoleti.

Flag che indica che le visualizzazioni dalla schermata iniziale predefinita (Intent#CATEGORY_HOME) possono fungere da delegato di grafia per la visualizzazione dell'editor delegato.

ShowForced

Flag per #showSoftInput per indicare che l'utente ha forzato l'apertura del metodo di input ,ad esempio tramite il menu con pressione prolungata, in modo che non venga chiuso fino a quando non lo fanno in modo esplicito.

ShowImplicit
Obsoleti.

Flag per #showSoftInput per indicare che si tratta di una richiesta implicita per visualizzare la finestra di input, non come risultato di una richiesta diretta da parte dell'utente.

Proprietà

Nome Descrizione
Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
CurrentInputMethodInfo

Restituisce l'oggetto InputMethodInfo del metodo di input attualmente selezionato (per l'utente del processo).

CurrentInputMethodSubtype

Restituisce il sottotipo del metodo di input corrente.

EnabledInputMethodList

Restituisce l'elenco dei metodi di input abilitati.

Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
InputMethodList

Restituisce l'elenco dei metodi di input installati.

IsAcceptingText

Restituisce true se la visualizzazione attualmente servita accetta modifiche full-text.

IsActive

Restituisce true se una vista è attualmente attiva per il metodo di input.

IsConnectionlessStylusHandwritingAvailable

Restituisce true se l'IME attualmente selezionato supporta sessioni di scrittura stilo senza connessione ed è abilitato.

IsFullscreenMode

Consente di determinare se il metodo di input collegato è in esecuzione in modalità schermo intero.

IsInputMethodSuppressingSpellChecker

Restituisce true se il metodo di input elimina il correttore ortografico di sistema.

IsStylusHandwritingAvailable

Restituisce true se l'IME attualmente selezionato supporta la grafia dello stilo e l'opzione è abilitata.

JniIdentityHashCode

Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
JniPeerMembers

API di sistema centrale per l'architettura generale del framework del metodo di input (IMF), che arbitra l'interazione tra le applicazioni e il metodo di input corrente.

LastInputMethodSubtype

Restituisce l'ultimo oggetto utilizzato nella cronologia InputMethodSubtype di sistema.

PeerReference

Ottiene il riferimento all'oggetto JNI per questo peer Java.

(Ereditato da Object)
ShortcutInputMethodsAndSubtypes

Restituisce una mappa di tutte le informazioni sul metodo di input del collegamento e i relativi sottotipi.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)
ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da Object)

Metodi

Nome Descrizione
AcceptStylusHandwritingDelegation(View, String, HandwritingDelegateFlag, IExecutor, IConsumer)

Accetta e avvia una sessione di grafia dello stilo nella visualizzazione delegata, se la delega di avvio della grafia è stata richiesta in precedenza utilizzando #prepareStylusHandwritingDelegation(View, String) il delegato e la vista appartiene a un pacchetto delegato specificato.

AcceptStylusHandwritingDelegation(View, String, IExecutor, IConsumer)

Accetta e avvia una sessione di grafia dello stilo nella visualizzazione delegata, se la delega di avvio della grafia è stata richiesta in precedenza utilizzando #prepareStylusHandwritingDelegation(View, String) il delegato e la vista appartiene a un pacchetto delegato specificato.

AcceptStylusHandwritingDelegation(View, String)

Accetta e avvia una sessione di grafia dello stilo nella visualizzazione delegata, se la delega di avvio della grafia è stata richiesta in precedenza utilizzando #prepareStylusHandwritingDelegation(View, String) il delegato e la vista appartiene a un pacchetto delegato specificato.

AcceptStylusHandwritingDelegation(View)

Accetta e avvia una sessione di grafia dello stilo nella visualizzazione delegata, se la delega di avvio della grafia è stata richiesta in precedenza tramite #prepareStylusHandwritingDelegation(View) il delegato.

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
DispatchKeyEventFromInputMethod(View, KeyEvent)

Fornisce l'implementazione predefinita di InputConnection#sendKeyEvent(KeyEvent), che dovrebbe inviare un evento della tastiera inviato dall'IME a una destinazione evento appropriata a seconda dello View stato attivo specificato e dello stato attivo corrente.

DisplayCompletions(View, CompletionInfo[])
Dispose()

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Dispose(Boolean)

Rilascia le risorse contenute in questo peer Java.

(Ereditato da Object)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
FromContext(Context)

API di sistema centrale per l'architettura generale del framework del metodo di input (IMF), che arbitra l'interazione tra le applicazioni e il metodo di input corrente.

GetEnabledInputMethodSubtypeList(InputMethodInfo, Boolean)

Restituisce un elenco di sottotipi del metodo di input abilitati per le informazioni sul metodo di input specificate.

GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
HideSoftInputFromInputMethod(IBinder, HideSoftInputFlags)

Chiudere o nascondere l'area di input soft del metodo di input, in modo che l'utente non lo veda più o possa interagire con esso.

HideSoftInputFromWindow(IBinder, HideSoftInputFlags, ResultReceiver)

Richiedere di nascondere la finestra di input soft dal contesto della finestra che attualmente accetta l'input.

HideSoftInputFromWindow(IBinder, HideSoftInputFlags)

Sinonimo di #hideSoftInputFromWindow(IBinder, int, ResultReceiver) senza risultato: richiedere di nascondere la finestra di input soft dal contesto della finestra che attualmente accetta l'input.

HideStatusIcon(IBinder)

Questo membro è deprecato.

InvalidateInput(View)

Fornisce un suggerimento al sistema che il testo associato a view viene aggiornato da un elemento che non è un editor di metodi di input (IME), in modo che il sistema possa annullare qualsiasi richiesta di modifica del testo in sospeso dall'IME finché non riceve il nuovo contesto di modifica, ad esempio il testo circostante fornito da InputConnection#takeSnapshot().

InvokeIsActive(View)

Restituisce true se la vista specificata è la visualizzazione attualmente attiva per il metodo di input.

IsWatchingCursor(View)
Obsoleti.

Restituisce true se il metodo di input corrente desidera controllare la posizione del cursore dell'editor di input nella relativa finestra.

JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
PrepareStylusHandwritingDelegation(View, String)

Prepara la delega dell'avvio della sessione di grafia dello stilo a un editor diverso in una finestra diversa in un pacchetto diverso rispetto alla visualizzazione in cui è stato rilevato il tratto iniziale della grafia.

PrepareStylusHandwritingDelegation(View)

Prepara la delega della sessione di grafia dello stilo iniziale a un editor diverso nella stessa finestra o in una finestra diversa rispetto alla visualizzazione in cui è stato rilevato il tratto iniziale della grafia.

RestartInput(View)

Se il metodo di input è attualmente connesso alla visualizzazione specificata, riavviarlo con il nuovo contenuto.

SendAppPrivateCommand(View, String, Bundle)

Chiamare InputMethodSession#appPrivateCommand(String, Bundle) InputMethodSession.appPrivateCommand() sul metodo di input corrente.

SetAdditionalInputMethodSubtypes(String, InputMethodSubtype[])

Impostare sottotipi di metodo di input aggiuntivi.

SetCurrentInputMethodSubtype(InputMethodSubtype)

Passare a un nuovo sottotipo del metodo di input corrente.

SetExplicitlyEnabledInputMethodSubtypes(String, Int32[])

Aggiorna l'elenco di abilitato in modo esplicito InputMethodSubtype per un determinato IME di proprietà del processo chiamante.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetInputMethod(IBinder, String)

Forzare il passaggio a un nuovo componente del metodo di input.

SetInputMethodAndSubtype(IBinder, String, InputMethodSubtype)

Forzare il passaggio a un nuovo metodo di input e un sottotipo.

ShouldOfferSwitchingToNextInputMethod(IBinder)

Restituisce true se l'IME corrente deve offrire agli utenti modi per passare a un metodo di input successivo (e.

ShowInputMethodAndSubtypeEnabler(String)

Mostra le impostazioni per abilitare i sottotipi del metodo di input specificato.

ShowInputMethodPicker()

Mostra finestra popup selezione IME.

ShowSoftInput(View, ShowFlags, ResultReceiver)

Richiedere in modo esplicito che l'area di input soft del metodo di input corrente venga visualizzata all'utente, se necessario.

ShowSoftInput(View, ShowFlags)

Sinonimo di #showSoftInput(View, int, ResultReceiver) senza un ricevitore di risultati: richiedere in modo esplicito che l'area di input soft del metodo di input corrente venga visualizzata all'utente, se necessario.

ShowSoftInputFromInputMethod(IBinder, ShowFlags)

Mostra l'area di input software del metodo di input, in modo che l'utente visualizzi la finestra del metodo di input e possa interagire con essa.

ShowStatusIcon(IBinder, String, Int32)

Questo membro è deprecato.

StartConnectionlessStylusHandwriting(View, CursorAnchorInfo, IExecutor, IConnectionlessHandwritingCallback)

Avvia una sessione di grafia senza connessione.

StartConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, IExecutor, IConnectionlessHandwritingCallback)

Avvia una sessione di grafia senza stilo senza connessione (vedere #startConnectionlessStylusHandwriting) e consente inoltre di eseguire il commit del testo scritto a mano riconosciuto in un secondo momento in un editor di testo usando #acceptStylusHandwritingDelegation(View).

StartConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, String, IExecutor, IConnectionlessHandwritingCallback)

Avvia una sessione di grafia senza stilo senza connessione (vedere #startConnectionlessStylusHandwriting) e consente inoltre di eseguire il commit del testo scritto a mano riconosciuto in un secondo momento in un editor di testo usando #acceptStylusHandwritingDelegation(View, String).

StartStylusHandwriting(View)

Avviare la sessione di grafia dello stilo.

SwitchToLastInputMethod(IBinder)

Forzare il passaggio all'ultimo metodo di input usato e al sottotipo.

SwitchToNextInputMethod(IBinder, Boolean)

Forzare il passaggio al metodo di input successivo e al sottotipo.

ToArray<T>()

Crea una matrice gestita da questo wrapper di matrice Java.

(Ereditato da Object)
ToggleSoftInput(ShowFlags, HideSoftInputFlags)

Questo metodo attiva o disattiva la visualizzazione della finestra del metodo di input.

ToggleSoftInputFromWindow(IBinder, ShowSoftInputFlags, HideSoftInputFlags)

Questo metodo attiva o disattiva la visualizzazione della finestra del metodo di input.

ToString()

Restituisce una rappresentazione di stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

Annulla la registrazione di questo Java peer dal runtime di interoperabilità.

(Ereditato da Object)
UpdateCursor(View, Int32, Int32, Int32, Int32)
Obsoleti.

Segnala la posizione corrente del cursore nella relativa finestra.

UpdateCursorAnchorInfo(View, CursorAnchorInfo)

Segnala la modifica posizionale del punto di inserimento del testo e/o dei caratteri nella stringa di composizione.

UpdateExtractedText(View, Int32, ExtractedText)
UpdateSelection(View, Int32, Int32, Int32, Int32)

Segnala l'intervallo di selezione corrente.

ViewClicked(View)

Notifica all'evento quando l'utente ha toccato o fatto clic sulla visualizzazione testo.

Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IJavaPeerable.Disposed()

Notifica al runtime di interoperabilità che il peer gestito è stato eliminato.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

Rilascia questo Java peer a meno che non venga conservato da un altro riferimento gestito.

(Ereditato da Object)
IJavaPeerable.Finalized()

Notifica al runtime di interoperabilità che il peer gestito è stato finalizzato.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

Ottiene lo stato che descrive la relazione tra questo peer gestito e il relativo riferimento JNI.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Imposta il codice hash dell'identità di interoperabilità per questo Java peer.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Imposta lo stato peer gestito e JNI per questo peer Java.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Imposta il riferimento all'oggetto JNI usato da questo peer gestito.

(Ereditato da Object)

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

API di sistema centrale per l'architettura generale del framework del metodo di input (IMF), che arbitra l'interazione tra le applicazioni e il metodo di input corrente.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a