ContentCaptureManager Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto.
[Android.Runtime.Register("android/view/contentcapture/ContentCaptureManager", ApiSince=29, DoNotGenerateAcw=true)]
public sealed class ContentCaptureManager : Java.Lang.Object
[<Android.Runtime.Register("android/view/contentcapture/ContentCaptureManager", ApiSince=29, DoNotGenerateAcw=true)>]
type ContentCaptureManager = class
inherit Object
- Ereditarietà
- Attributi
Commenti
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto.
L'acquisizione di contenuti offre un'acquisizione continua in tempo reale dell'attività dell'applicazione, la visualizzazione e gli eventi a un servizio di intelligence fornito dal sistema Android. Il servizio intelligence usa quindi tali informazioni per mediare e velocizzare il percorso utente attraverso app diverse. Ad esempio, quando l'utente riceve un indirizzo del ristorante in un'app di chat e passa a un'app mappa per cercare tale ristorante, il servizio intelligence potrebbe offrire una finestra di dialogo di riempimento automatico per consentire all'utente di selezionarne automaticamente l'indirizzo.
L'acquisizione di contenuti è stata progettata tenendo conto di due importanti preoccupazioni: privacy e prestazioni.
<ul><li><b>Privacy:</b> il servizio intelligence è un componente attendibile fornito dal produttore del dispositivo e che non può essere modificato dall'utente (anche se l'utente può disabilitare globalmente l'acquisizione di contenuti usando l'app Impostazioni Android). Questo servizio può usare solo i dati per l'apprendimento automatico nel dispositivo, che viene applicato sia in base ai requisiti di isolamento dei processi che di CDD.
<l'acquisizione di contenuti li><b>Performance:</b> è altamente ottimizzata per ridurre al minimo l'impatto nell'integrità complessiva del sistema del dispositivo e dell'app. Ad esempio, è abilitato solo nelle app (o anche in attività specifiche di un'app) consentite in modo esplicito dal servizio intelligence e memorizza nel buffer gli eventi in modo che vengano inviati in un batch al servizio (vedere #isContentCaptureEnabled() per altri casi quando è disabilitato).
</ul>
Infatti, prima di usare questo manager, lo sviluppatore dell'app deve verificare se è disponibile. Esempio:
<code>
ContentCaptureManager mgr = context.getSystemService(ContentCaptureManager.class);
if (mgr != null && mgr.isContentCaptureEnabled()) {
// ...
}
</code>
Gli sviluppatori di app in genere non devono interagire in modo esplicito con l'acquisizione del contenuto, tranne quando l'app:
<ul><li>Può definire un contesto android.content.LocusId per identificare uno stato univoco (ad esempio una conversazione tra 2 utenti di chat).
<li>Può avere più gerarchie di visualizzazione con significato contestuale diverso (ad esempio, un'app browser con più schede, ognuna che rappresenta un URL diverso).
<li>Contiene visualizzazioni personalizzate (che estendono direttamente La visualizzazione e non sono fornite dallo standard Android SDK.
<li>Contiene visualizzazioni che forniscono la propria gerarchia virtuale (ad esempio un Web browser che esegue il rendering degli elementi HTML usando un canvas).
</ul>
Il punto di integrazione principale con acquisizione del contenuto è .ContentCaptureSession Una sessione "main" viene creata automaticamente dal sistema Android quando l'acquisizione del contenuto è abilitata per l'attività e la relativa usata dalle visualizzazioni Android standard per notificare al servizio di acquisizione del contenuto eventi come le visualizzazioni aggiunte, le visualizzazioni sono state rimosse e il testo modificato dall'input dell'utente. La sessione potrebbe avere un ContentCaptureContext per fornire informazioni più contestuali su di esso, ad esempio il locus associato alla gerarchia di visualizzazione (vedere android.content.LocusId per altre informazioni sul locus). Per impostazione predefinita, la sessione principale non ha un ContentCaptureContextoggetto , ma è possibile modificarla dopo la creazione. Esempio:
<code>
protected void onCreate(Bundle savedInstanceState) {
// Initialize view structure
ContentCaptureSession session = rootView.getContentCaptureSession();
if (session != null) {
session.setContentCaptureContext(ContentCaptureContext.forLocusId("chat_UserA_UserB"));
}
}
</code>
Se l'attività contiene gerarchie di visualizzazione con un significato contestuale diverso, è necessario creare sessioni figlio per ogni radice della gerarchia di visualizzazione. Ad esempio, se l'attività è un browser, è possibile usare la sessione principale per l'URL principale di cui viene eseguito il rendering, quindi le sessioni figlio per ogni IFRAME:
<code>
ContentCaptureSession mMainSession;
protected void onCreate(Bundle savedInstanceState) {
// Initialize view structure...
mMainSession = rootView.getContentCaptureSession();
if (mMainSession != null) {
mMainSession.setContentCaptureContext(
ContentCaptureContext.forLocusId("https://example.com"));
}
}
private void loadIFrame(View iframeRootView, String url) {
if (mMainSession != null) {
ContentCaptureSession iFrameSession = mMainSession.newChild(
ContentCaptureContext.forLocusId(url));
}
iframeRootView.setContentCaptureSession(iFrameSession);
}
// Load iframe...
}
</code>
Se l'attività include visualizzazioni personalizzate (ad esempio, visualizzazioni che si estendono View direttamente e forniscono una sola visualizzazione logica, non una gerarchia ad albero virtuale) e fornisce contenuto pertinente per l'acquisizione di contenuti (a partire android.os.Build.VERSION_CODES#Q Android Qda , l'unico contenuto pertinente è testo), l'implementazione della visualizzazione deve:
<ul><li>Imposta come importante per l'acquisizione di contenuti.
<li>Fill ViewStructure usato per l'acquisizione di contenuti.
<li Notify the when the text is changed by user input.li>Notify the ContentCaptureSession when the text is changed by user input.
</ul>
Di seguito è riportato un esempio dei metodi pertinenti per una EditTextvisualizzazione simile a :
<code>
public class MyEditText extends View {
public MyEditText(...) {
if (getImportantForContentCapture() == IMPORTANT_FOR_CONTENT_CAPTURE_AUTO) {
setImportantForContentCapture(IMPORTANT_FOR_CONTENT_CAPTURE_YES);
}
}
public void onProvideContentCaptureStructure(@NonNull ViewStructure structure, int flags) {
super.onProvideContentCaptureStructure(structure, flags);
structure.setText(getText(), getSelectionStart(), getSelectionEnd());
structure.setHint(getHint());
structure.setInputType(getInputType());
// set other properties like setTextIdEntry(), setTextLines(), setTextStyle(),
// setMinTextEms(), setMaxTextEms(), setMaxTextLength()
}
private void onTextChanged() {
if (isLaidOut() && isImportantForContentCapture() && isTextEditable()) {
ContentCaptureManager mgr = mContext.getSystemService(ContentCaptureManager.class);
if (cm != null && cm.isContentCaptureEnabled()) {
ContentCaptureSession session = getContentCaptureSession();
if (session != null) {
session.notifyViewTextChanged(getAutofillId(), getText());
}
}
}
</code>
Se la visualizzazione fornisce una propria gerarchia virtuale (ad esempio, se si tratta di un browser che disegna il codice HTML usando Canvas o librerie native in un processo di rendering diverso), la visualizzazione è anche responsabile di notificare alla sessione quando gli elementi virtuali vengono visualizzati e scompaiono. Per altre informazioni, vedere View#onProvideContentCaptureStructure(ViewStructure, int) .
per android.view.contentcapture.ContentCaptureManager.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.
Campi
| Nome | Descrizione |
|---|---|
| DataShareErrorConcurrentRequest |
Obsoleti.
La richiesta è stata rifiutata perché è in corso una sessione di condivisione dati simultanea. |
| DataShareErrorTimeoutInterrupted |
Obsoleti.
La richiesta è stata interrotta a causa del timeout della sessione di condivisione dati. |
| DataShareErrorUnknown |
Obsoleti.
Si è verificato un errore durante la sessione di condivisione dei dati. |
Proprietà
| Nome | Descrizione |
|---|---|
| Class |
Restituisce la classe di runtime di questo |
| ContentCaptureConditions |
Ottiene l'elenco di condizioni per quando è necessario consentire l'acquisizione di contenuto. |
| ContentCaptureEnabled |
Controlla se l'acquisizione del contenuto è abilitata per questa attività. -oppure- Chiamato dalle app per abilitare o disabilitare in modo esplicito l'acquisizione del contenuto. |
| Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
| JniIdentityHashCode |
Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| JniManagedPeerState |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| JniPeerMembers |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. |
| PeerReference |
Ottiene il riferimento all'oggetto JNI per questo peer Java. (Ereditato da Object) |
| ServiceComponentName |
Restituisce il nome del componente del servizio di sistema che utilizza gli eventi acquisiti per l'utente corrente. |
| 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 |
|---|---|
| Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| 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) |
| DisposeUnlessReferenced() |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| Equals(Object) |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
| GetHashCode() |
Restituisce un valore di codice hash per l'oggetto . (Ereditato da Object) |
| 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) |
| RemoveData(DataRemovalRequest) |
Chiamato dall'app per richiedere al servizio di acquisizione del contenuto di rimuovere i dati di acquisizione del contenuto associati ad alcuni contesti. |
| SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| ShareData(DataShareRequest, IExecutor, IDataShareWriteAdapter) |
Chiamato dall'app per richiedere la condivisione dei dati tramite la scrittura in un file. |
| ToArray<T>() |
Crea una matrice gestita da questo wrapper di matrice Java. (Ereditato da Object) |
| 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) |
| 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() |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| IJavaPeerable.Finalized() |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. (Ereditato da JavaObject) |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ottiene il nome JNI del tipo dell'istanza |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Fornisce altri modi per l'integrazione delle app con il sottosistema di acquisizione del contenuto. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Provare a digitare |