Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Мобильное приложение может программно предоставлять доступ к последним URL-адресам веб-сайта и ссылкам на документ на компьютер с Windows, настроив Связь с телефоном. Эта функция непрерывности задач доступна на устройствах Android, интегрированных с интерфейсом "Связь с Windows".
Эта функция доступна только на поддерживаемых устройствах для Связь с телефоном интерфейсов.
В этой документации описано, как интегрировать приложение с API непрерывности задач Связь с телефоном, включая требования к сценариям, область поверхности и утверждение функции ограниченного доступа (LAF).
Дополнительные сведения о Связь с телефоном. Синхронизация смартфона с компьютером Windows.
Требования к сценарию
API непрерывности задач позволяет синхронизировать содержимое из приложения Android с компьютером с Windows, настроив Связь с телефоном. Для предоставления доступа к этому API необходимо выполнить следующие условия:
- ВЕБ-URL-адреса синхронизации, которые являются допустимыми URL-адресами, доступными на компьютере с Windows
- Ссылки на облачные документы do sync, доступные компьютером Windows
- Синхронизация локальных документов с компьютером Windows, который должен быть доступен на мобильном устройстве с помощью приложения.
- Не синхронизировать более 60 раз в минуту
- НЕ синхронизируйте содержимое, если пользователь не взаимодействует с вашим приложением
поверхность Связь с телефоном
Связь с телефоном будет отображать содержимое синхронизации в узле "Приложения" в разделе "Недавно использованные" и "Последние веб-сайты" и во всплывающем элементе уведомлений.
Утверждение функции ограниченного доступа (LAF)
Связь с телефоном непрерывность задач — это функция ограниченного доступа (LAF). Чтобы получить доступ к этому API, необходимо получить утверждение от Корпорации Майкрософт для взаимодействия с предварительно загруженным пакетом Связь с Windows на мобильных устройствах Android.
Чтобы запросить доступ, отправьте сообщение электронной почты wincrossdeviceapi@microsoft.com
с указанными ниже сведениями.
- Описание пользовательского интерфейса
- Снимок экрана: приложение, в котором пользователь обращается к веб-сайту или документам
- PackageId приложения
- Ссылка на магазин Google Play для приложения
Если запрос утвержден, вы получите инструкции по разблокировке функции. Утверждения будут основаны на ваших сообщениях, если ваш сценарий соответствует требованиям сценария , описанным выше.
Обработка данных
Используя API непрерывности задач Связь с телефоном, корпорация Майкрософт будет обрабатывать и передавать данные в соответствии с соглашением о службах Майкрософт и заявлением о конфиденциальности Майкрософт. Данные, передаваемые на связанные устройства пользователя, могут обрабатываться через облачные службы Майкрософт, чтобы обеспечить надежную передачу данных между устройствами. Данные, обрабатываемые этим API, не сохраняются облачными службами Майкрософт, подлежащими контролю пользователей.
Пакет SDK для нескольких устройств, который будет интегрироваться в пакет, гарантирует, что данные, предоставленные API, обрабатываются только доверенными пакетами Майкрософт.
Интеграция приложения с API непрерывности задач Связь с телефоном
Чтобы интегрировать мобильное приложение Android с API непрерывности задач Связь с телефоном, необходимо обновить объявления манифеста, а затем отправить контекст приложения. См. примеры кода ниже.
Объявления манифеста приложения Android
Приложение должно зарегистрировать приемник широковещательного трансляции для поставщика контекста меж устройств, чтобы участвовать в контракте. Регистрация должна находиться в манифесте следующим образом.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<!--
If the app targets API 30 or higher, be sure to use the <queries>
and add com.microsoft.appmanager to the included packages.
-->
<queries>
<package android:name="com.microsoft.appmanager" />
</queries>
<application …
<!-- … -->
<!--
This is the receiver declaration for receiving broadcasts from LTW.
It needs to be exported with meta-data as this is checked for
The package before we send the broadcast.
-->
<receiver
android:name="com.microsoft.crossdevicesdk.continuity.AppContextBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.microsoft.crossdevice.appcontextrequest" />
</intent-filter>
<meta-data
android:name="com.microsoft.crossdevice.sampleProviderMetadataName"
android:value="true" />
</receiver>
</application>
</manifest>
Примеры кода для отправки контекста приложения
После добавления объявлений манифеста партнерские приложения могут отправлять контекст приложения, как показано в примерах кода ниже.
В этом примере показано использование IAppContextEventHandler
интерфейса с Java.
IAppContextEventHandler appContextEventHandler = new IAppContextEventHandler() {
@Override
public void onContextRequestReceived(ContextRequestInfo contextRequestInfo) {
Log.d(TAG, String.format("onContextRequestReceived, type:%s", contextRequestInfo.getType()));
//Not necessary to do following things in here, just
//make sure to send app context after receiving broadcast.
AppContext appContext = new AppContext();
//...
//set parameter
appContext.setType(ProtocolConstants.TYPE_APPLICATION_CONTEXT);
appContext.setCreateTime(System.currentTimeMillis());
appContext.setLastUpdatedTime(System.currentTimeMillis());
appContext.setTitle("New PowerPoint Presentation");
appContext.setExtras("{\"DocInfo\":\"[{\"timestamp\":1672,\"DocTitle\":\"Book Sharing\",\"Index\":\"8\"}]\"}");
//...
AppContextManager.INSTANCE.sendAppContext(getApplicationContext(),appContext);
}
@Override
public void onInvalidContextRequestReceived(@NonNull Throwable throwable) {
Log.e(TAG, String.format("onInvalidContextRequestReceived: " + throwable.getMessage()));
}
@Override
public void onSyncServiceDisconnected() {
Log.d(TAG, String.format("onSyncServiceDisconnected"));
}
};
AppContextManager.INSTANCE.setAppContextEventHandler(appContextEventHandler);
В этом примере показано использование выражения объекта для реализации IAppContextEventHandler
интерфейса с Kotlin.
val appContextEventHandler = object : IAppContextEventHandler {
override fun onContextRequestReceived(contextRequestInfo: ContextRequestInfo) {
Log.d(TAG, String.format("onContextRequestReceived, type:%s", contextRequestInfo.type));
//Not necessary to do following things in here, just
//make sure to send app context after receiving broadcast.
var appContext = AppContext()
//...
//set parameter
appContext.type = ProtocolConstants.TYPE_APPLICATION_CONTEXT
appContext.createTime = System.currentTimeMillis()
appContext.lastUpdatedTime = System.currentTimeMillis()
appContext.setTitle("New PowerPoint Presentation")
appContext.setExtras("{\"DocInfo\":\"[{\"timestamp\":1672,\"DocTitle\":\"Book Sharing\",\"Index\":\"8\"}]\"}")
//...
AppContextManager.sendAppContext(applicationContext,appContext)
}
override fun onInvalidContextRequestReceived(throwable: Throwable) {
Log.e(TAG, String.format("onInvalidContextRequestReceived: " + throwable.message))
}
override fun onSyncServiceDisconnected() {
Log.d(TAG, String.format("onSyncServiceDisconnected"))
}
}
AppContextManager.setAppContextEventHandler(appContextEventHandler)
Описание протокола
Протокол — это простая трансляция, которая отправляется из "Связь с Windows" в каждый из пакетов, поддерживающих определенный тип функции контекста приложения, когда "Связь с Windows" готов к получению контекста приложения.
Поле намерения | Ключ | Значение |
---|---|---|
Действие | Н/П |
com.microsoft.crossdevice.appcontextrequest Исправлена ссылка на Windows. Запрашиватель будет com.microsoft.appmanager |
Дополнительные (пакет) | version |
2.0 (версия [дополнительный].[ major]) |
Дополнительные (пакет) | contentProviderUri |
content://com.microsoft.taskcontinuity/b695d1d8 Уникально создано для каждого пакета. |
Дополнительные (пакет) | requestedContextType |
Если указано, укажите, какой тип контекста приложения запрашивается. Это двоичный флаг, в настоящее время у нас есть два типа... Контекст приложения: 0x01 и контекст журнала браузера: 0x02. |
После получения трансляции пакет SDK будет отвечать за проверку и обработку информации. Ожидание от пакетов, получающих широковещательный канал, заключается в отправке контекста приложения для связи с Windows. Следующие значения должны предоставляться партнерскими приложениями при отправке контекста приложения:
Ключ | Значение | Дополнительные сведения |
---|---|---|
type [обязательно] |
Двоичный флаг, указывающий, какой тип контекста приложения отправляется в LTW. Значение должно быть согласовано с параметром requestedContextType . |
|
createTime [обязательно] |
Метка времени создания контекста приложения. | |
lastUpdatedTime [обязательно] |
Метка времени последнего обновления контекста приложения. | В любое время, когда обновляются все поля контекста приложения, необходимо записать обновленное время. |
teamId [необязательно] |
Используется для идентификации организации или группы, к которой принадлежит приложение. | |
intentUri [необязательно] |
Используется для указания того, какое приложение может продолжить контекст приложения, переданный с исходного устройства. | |
appId [необязательно] |
Пакет приложения, для который используется контекст. | Использовать это необходимо только поставщикам служб контекста. Ознакомьтесь с документами Java. Если опущено, будет использоваться пакет поставщика ответа вызовов. |
title [необязательно] |
Заголовок этого контекста приложения, например имя документа или название веб-страницы. | |
weblink [необязательно] |
URL-адрес веб-страницы для загрузки в браузере для продолжения контекста приложения. | |
preview [необязательно] |
Байт изображения предварительного просмотра, который может представлять контекст приложения. | |
extras [необязательно] |
Объект пары "ключ-значение", содержащий сведения о состоянии конкретного приложения, необходимые для продолжения контекста приложения на продолжающемся устройстве. | Необходимо указать, когда контекст приложения имеет уникальные данные. |
LifeTime [необязательно] |
Время существования контекста приложения в миллисекундах. | Используется только для текущего сценария, если не задано, значение по умолчанию равно -1. |
Чтобы обеспечить совместимость с предыдущей функцией непрерывности браузера с помощью пакета SDK X-Device 1.0, мы добавили еще два дополнительных метода. При использовании этой функции необходимо указать следующие значения:
Поле намерения | Ключ | Значение |
---|---|---|
browserContextEmptyFlag [необязательно] |
Пометка, чтобы указать, является ли контекст браузера пустым. | Это только для функции непрерывности браузера. |
browserHistory [необязательно] |
Контекст журнала просмотра для приложения. | Это только для функции непрерывности браузера. В настоящее время рекомендуется предоставлять до 3 URI. Если предоставляется больше, они будут игнорироваться. |
Партнерские приложения могут вызывать addBrowserContext
метод добавления журнала браузера.
При добавлении журнала браузера необходимо указать следующие значения:
Ключ | Значение |
---|---|
browserWebUri |
Веб-URI, который откроется в браузере на компьютере. |
(http: или https:) | |
title |
Заголовок веб-страницы. |
timestamp |
Метка времени, которую веб-страница была открыта или обновлена. |
favIcon [необязательно] |
Favicon веб-страницы в байтах должен быть небольшим в целом. |
Репозиторий Windows cross-Device на GitHub
Сведения об интеграции пакета SDK windows cross-Device в проект в репозитории Windows-Cross-Device на сайте GitHub.
часто задаваемые вопросы Связь с телефоном
Список часто задаваемых вопросов см. в Связь с телефоном часто задаваемых вопросов.
Windows developer