Язык

ContentCaptureManager Класс

Определение

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

[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
Наследование
ContentCaptureManager
Атрибуты

Комментарии

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

Запись содержимого обеспечивает непрерывное запись действий приложений, отображение и события в службу аналитики, предоставляемую системой Android. Затем служба аналитики использует эти сведения для медиатации и ускорения взаимодействия пользователей через различные приложения. Например, когда пользователь получает адрес ресторана в приложении чата и переключается на приложение карты для поиска этого ресторана, служба аналитики может предложить диалоговое окно автозаполнения, чтобы позволить пользователю автоматически выбрать свой адрес.

Запись содержимого была разработана с учетом двух основных проблем: конфиденциальности и производительности.

<ul><li><b Privacy:</b>> служба аналитики является доверенным компонентом, предоставленным производителем устройства, и это не может быть изменено пользователем (хотя пользователь может глобально отключить запись содержимого с помощью приложения параметров Android). Эта служба может использовать только данные для машинного обучения на устройстве, которое применяется как с помощью изоляции процессов, так и требований CDD. <li><b>Производительность:</b> запись содержимого высоко оптимизирована, чтобы свести к минимуму влияние на приложение jankiness и общую работоспособность системы устройств. Например, его только в приложениях (или даже определенных действиях из приложения), которые были явно разрешены службой аналитики, и он буферизирует события, чтобы они отправлялись в пакет в службу (см #isContentCaptureEnabled() . другие случаи, когда он отключен). </ul>

На самом деле, прежде чем использовать этот менеджер, разработчик приложений должен проверить, доступен ли он. Пример:

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

Разработчики приложений обычно не должны явно взаимодействовать с записью содержимого, за исключением случаев, когда приложение:

<ul><li>может определить контекстное android.content.LocusId состояние для идентификации уникального состояния (например, беседы между 2 пользователями чата). <li>Может иметь несколько иерархий представлений с разным контекстным значением (например, приложение браузера с несколькими вкладками, каждая из которых представляет другой URL-адрес). <li>Содержит пользовательские представления (которые расширяют представление напрямую и не предоставляются стандартным пакетом SDK для Android. <li>Содержит представления, которые предоставляют собственную виртуальную иерархию (например, веб-браузер, который отображает ЭЛЕМЕНТЫ HTML с помощью холста). </ul>

Основная точка интеграции с записью содержимого — это ContentCaptureSession. Сеанс "main" автоматически создается системой Android, когда запись содержимого включена для действия и используется стандартными представлениями Android для уведомления службы отслеживания содержимого событий, таких как добавление представлений, просмотры были удалены, а текст изменен пользовательскими входными данными. Сеанс может предоставить ContentCaptureContext более контекстные сведения об этом, например локус, связанный с иерархией представлений (см android.content.LocusId . дополнительные сведения о локусе). По умолчанию основной сеанс не имеет ContentCaptureContext, но его можно изменить после создания. Пример:

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

Если действие содержит иерархии представлений с другим контекстным значением, следует создать дочерние сеансы для каждого корневого каталога иерархии представлений. Например, если действие является браузером, можно использовать основной сеанс для отрисовки основного URL-адреса, а затем дочерние сеансы для каждого из них 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>

Если у вашего действия есть пользовательские представления (т. е. представления, которые расширяются View напрямую и предоставляют только одно логическое представление, а не иерархию виртуального дерева), и он предоставляет содержимое, которое относится к захвату содержимого (как android.os.Build.VERSION_CODES#Q Android Qи только соответствующее содержимое является текстом), то ваша реализация представления должна:

<ul><li>Set it as important for content capture. <li>Fill ViewStructure , используемый для записи содержимого. <li>Уведомлять ContentCaptureSession о том, когда текст изменяется по входным данным пользователя. </ul>

Ниже приведен пример соответствующих методов для EditTextпредставления типа:

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

Если представление предоставляет собственную виртуальную иерархию (например, если это браузер, который рисует HTML-код с помощью Canvas или собственные библиотеки в другом процессе отрисовки), представление также отвечает за уведомление сеанса о появлении и исчезновении виртуальных элементов . Дополнительные сведения см. в статье View#onProvideContentCaptureStructure(ViewStructure, int) .

Java документации по android.view.contentcapture.ContentCaptureManager.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Поля

Имя. Описание
DataShareErrorConcurrentRequest
Устаревшие.

Запрос был отклонен, так как выполняется одновременный сеанс общего доступа к данным.

DataShareErrorTimeoutInterrupted
Устаревшие.

Запрос был прерван из-за времени ожидания сеанса общего доступа к данным.

DataShareErrorUnknown
Устаревшие.

Ошибка произошла во время сеанса общего доступа к данным.

Свойства

Имя. Описание
Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
ContentCaptureConditions

Возвращает список условий для разрешения записи содержимого.

ContentCaptureEnabled

Проверяет, включена ли запись содержимого для этого действия. -или- Вызывается приложениями для явного включения или отключения записи содержимого.

Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

(Унаследовано от Object)
JniManagedPeerState

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
JniPeerMembers

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

(Унаследовано от Object)
ServiceComponentName

Возвращает имя компонента системной службы, которая использует захваченные события для текущего пользователя.

ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

(Унаследовано от Object)
ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

(Унаследовано от Object)

Методы

Имя. Описание
Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
Dispose()

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
Dispose(Boolean)

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
DisposeUnlessReferenced()

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
Equals(Object)

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
GetHashCode()

Возвращает хэш-значение кода для объекта.

(Унаследовано от Object)
JavaFinalize()
Устаревшие.

Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет.

(Унаследовано от Object)
Notify()

Просыпается один поток, ожидающий монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
RemoveData(DataRemovalRequest)

Вызывается приложением, чтобы запросить службу отслеживания содержимого, чтобы удалить данные записи содержимого, связанные с определенным контекстом.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
ShareData(DataShareRequest, IExecutor, IDataShareWriteAdapter)

Вызывается приложением, чтобы запросить общий доступ к данным с помощью записи в файл.

ToArray<T>()

Создает управляемый массив из этого Java оболочки массива.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

(Унаследовано от Object)
Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.>

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

Имя. Описание
IJavaPeerable.Disposed()

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
IJavaPeerable.Finalized()

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

(Унаследовано от JavaObject)

Методы расширения

Имя. Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

Применяется к