Sprache

ContentCaptureManager Klasse

Definition

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

[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
Vererbung
ContentCaptureManager
Attribute

Hinweise

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

Die Inhaltserfassung bietet Echtzeit-, fortlaufende Erfassung von Anwendungsaktivitäten, Anzeige- und Ereignissen für einen Intelligence-Dienst, der vom Android-System bereitgestellt wird. Der Intelligence-Dienst verwendet diese Informationen dann, um die Benutzerreise durch verschiedene Apps zu vermitteln und zu beschleunigen. Wenn der Benutzer beispielsweise eine Restaurantadresse in einer Chat-App empfängt und zu einer Karten-App wechselt, um nach diesem Restaurant zu suchen, könnte der Intelligence-Dienst ein Dialogfeld zum automatischen Ausfüllen anbieten, damit der Benutzer seine Adresse automatisch auswählen kann.

Die Inhaltserfassung wurde mit zwei hauptanliegend gestaltet: Datenschutz und Leistung.

<ul><li><b>Privacy:</b> Der Intelligence-Dienst ist eine vertrauenswürdige Komponente, die vom Gerätehersteller bereitgestellt wird und die vom Benutzer nicht geändert werden kann (obwohl der Benutzer die Inhaltserfassung global mit der Android-Einstellungs-App deaktivieren kann). Dieser Dienst kann nur die Daten für geräteinternes maschinelles Lernen verwenden, was sowohl durch Prozessisolation als auch durch CDD-Anforderungen erzwungen wird. <li><b>Performance:</b> Inhaltserfassung ist hoch optimiert, um ihre Auswirkungen auf die App-Jankiness und die allgemeine Gerätesystemintegrität zu minimieren. Dies ist beispielsweise nur für Apps (oder sogar bestimmte Aktivitäten aus einer App) aktiviert, die explizit vom Intelligence-Dienst zugelassen wurden, und puffert die Ereignisse so, dass sie in einem Batch an den Dienst gesendet werden (siehe #isContentCaptureEnabled() andere Fälle, wenn sie deaktiviert sind). </ul>

Vor der Verwendung dieses Managers sollte der App-Entwickler überprüfen, ob er verfügbar ist. Beispiel:

<code>
             ContentCaptureManager mgr = context.getSystemService(ContentCaptureManager.class);
             if (mgr != null && mgr.isContentCaptureEnabled()) {
               // ...
             }
</code>

App-Entwickler müssen in der Regel nicht explizit mit der Inhaltserfassung interagieren, es sei denn, die App:

<ul><li>Can define a contextual android.content.LocusId to identify unique state (such as a conversation between 2 chat users). <li>Can have multiple view hierarchies with different contextual meaning (for example, a browser app with multiple tabs, each representing a different URL). <li>Enthält benutzerdefinierte Ansichten (die Ansicht direkt erweitern und nicht vom Standardmäßigen Android SDK bereitgestellt werden. <li>Enthält Ansichten, die eine eigene virtuelle Hierarchie bereitstellen (z. B. einen Webbrowser, der die HTML-Elemente mithilfe einer Canvas rendert). </ul>

Der Hauptintegrationspunkt mit der Inhaltserfassung ist die ContentCaptureSession. Eine "Haupt"-Sitzung wird automatisch vom Android-System erstellt, wenn die Inhaltserfassung für die Aktivität und deren Verwendung durch die standardmäßigen Android-Ansichten aktiviert ist, um den Inhaltsaufnahmedienst über Ereignisse wie hinzugefügte Ansichten, Ansichten entfernt und textänderung durch Benutzereingaben zu benachrichtigen. Die Sitzung könnte über ContentCaptureContext weitere kontextbezogene Informationen verfügen, z. B. den locus, der der Ansichtshierarchie zugeordnet ist (weitere android.content.LocusId Informationen zu Locus). Standardmäßig verfügt die Hauptsitzung nicht über eine ContentCaptureContext, Sie können sie aber nach der Erstellung ändern. Beispiel:

<code>
            protected void onCreate(Bundle savedInstanceState) {
              // Initialize view structure
              ContentCaptureSession session = rootView.getContentCaptureSession();
              if (session != null) {
                session.setContentCaptureContext(ContentCaptureContext.forLocusId("chat_UserA_UserB"));
              }
            }
</code>

Wenn Ihre Aktivität Ansichtshierarchien mit einer anderen kontextbezogenen Bedeutung enthält, sollten Sie untergeordnete Sitzungen für jeden Ansichtshierarchiestamm erstellen. Wenn Ihre Aktivität z. B. ein Browser ist, können Sie die Hauptsitzung für das Rendern der Haupt-URL verwenden, und dann untergeordnete Sitzungen für jede 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>

Wenn Ihre Aktivität benutzerdefinierte Ansichten enthält (d. h. Ansichten, die direkt erweitert View werden und nur eine logische Ansicht bereitstellen, nicht eine virtuelle Struktur hiearchisch), und sie stellt Inhalte bereit, die für die Inhaltserfassung relevant sind (ab android.os.Build.VERSION_CODES#Q Android Q, der einzige relevante Inhalt ist Text), dann sollte Ihre Ansichtsimplementierung folgendes ausführen:

<ul><li>Legen Sie sie als wichtig für die Inhaltserfassung fest. <li>Fill ViewStructure wird für die Inhaltserfassung verwendet. <li>Benachrichtigen Sie, ContentCaptureSession wann der Text von der Benutzereingabe geändert wird. </ul>

Hier ist ein Beispiel für die relevanten Methoden für eine EditText-ähnliche Ansicht:

<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>

Wenn Ihre Ansicht eine eigene virtuelle Hierarchie bereitstellt (z. B. wenn es sich um einen Browser handelt, der den HTML-Code mithilfe Canvas oder systemeigene Bibliotheken in einem anderen Renderprozess zeichnet), ist die Ansicht auch dafür verantwortlich, die Sitzung zu benachrichtigen, wenn die virtuellen Elemente angezeigt und ausgeblendet werden . Weitere Informationen finden Sie unter View#onProvideContentCaptureStructure(ViewStructure, int) .

Java-Dokumentation für android.view.contentcapture.ContentCaptureManager.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Felder

Name Beschreibung
DataShareErrorConcurrentRequest
Veraltet.

Die Anforderung wurde abgelehnt, da eine gleichzeitige Datenfreigabesitzung ausgeführt wird.

DataShareErrorTimeoutInterrupted
Veraltet.

Die Anforderung wurde aufgrund des Timeouts für die Datenfreigabesitzung unterbrochen.

DataShareErrorUnknown
Veraltet.

Fehler während der Datenfreigabesitzung.

Eigenschaften

Name Beschreibung
Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
ContentCaptureConditions

Ruft die Liste der Bedingungen ab, für die inhaltserfassung zulässig sein soll.

ContentCaptureEnabled

Überprüft, ob die Inhaltserfassung für diese Aktivität aktiviert ist. -oder- Von Apps aufgerufen, um die Inhaltserfassung explizit zu aktivieren oder zu deaktivieren.

Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
JniIdentityHashCode

Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist.

(Geerbt von Object)
JniManagedPeerState

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
JniPeerMembers

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

PeerReference

Ruft den JNI-Objektverweis für diesen Java Peer ab.

(Geerbt von Object)
ServiceComponentName

Gibt den Komponentennamen des Systemdiensts zurück, der die erfassten Ereignisse für den aktuellen Benutzer verwendet.

ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)
ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)

Methoden

Name Beschreibung
Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
Dispose()

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
Dispose(Boolean)

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
DisposeUnlessReferenced()

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
Equals(Object)

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
RemoveData(DataRemovalRequest)

Wird von der App aufgerufen, um den Inhaltsaufnahmedienst anzufordern, Um Inhaltserfassungsdaten zu entfernen, die einem bestimmten Kontext zugeordnet sind.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
ShareData(DataShareRequest, IExecutor, IDataShareWriteAdapter)

Wird von der App aufgerufen, um die Datenfreigabe per Schreiben in eine Datei anzufordern.

ToArray<T>()

Erstellt ein verwaltetes Array aus diesem Java Arraywrapper.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><>

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IJavaPeerable.Disposed()

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
IJavaPeerable.Finalized()

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

(Geerbt von JavaObject)

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Bietet zusätzliche Möglichkeiten für Apps zur Integration in das Inhaltserfassungssubsystem.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: