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
- Наследование
- Атрибуты
Комментарии
Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого.
Запись содержимого обеспечивает непрерывное запись действий приложений, отображение и события в службу аналитики, предоставляемую системой 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 |
Возвращает класс среды выполнения этого |
| 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 типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Предоставляет дополнительные способы интеграции приложений с подсистемой отслеживания содержимого. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |