page.title=Связи приложений page.image=images/cards/card-app-linking_2x.png page.keywords=связывание приложений, прямые ссылки, намерения @jd:body
Система намерений Android представляет собой гибкий механизм, позволяющий приложениям обрабатывать контент и запросы. Многие приложения могут объявлять в своих фильтрах намерений соответствующие шаблоны URI. При нажатии пользователем на веб-ссылку , у которой нет обработчика запуска по умолчанию, платформа может выдать ему диалоговое окно со списком доступных приложений, объявивших соответствующие фильтры намерений.
В Android M Developer Preview представлена поддержка связей приложений. Она выгодно отличается от существующих методов обработки ссылок, предоставляя разработчикам возможность связывать приложение с принадлежащим им веб-доменом. Благодаря этой связи платформа автоматически, не спрашивая у пользователя, определит приложение, которое следует использовать по умолчанию для обработки определенной веб-ссылки.
Чтобы установить связь, владельцу сайта следует объявить связь с приложением. Для этого владелец размещает в домене файл JSON с именем {@code statements.json}. Местопложение файла должно быть хорошо известно.
http://<domain>:<optional port>/.well-known/statements.json
Примечание. В период использования M Developer Preview проверка файла JSON выполняется по протоколу HTTP. В официальном выпуске платформы она будет осуществляться по зашифрованному протоколу HTTPS.
В этом файле JSON содержатся сведения о приложении Android, которое следует использовать в качестве обработчика по умолчанию для URL в этом домене. Для определения приложения используются следующие поля:
keytool -list -v -keystore my-release-key.keystore
Ниже представлен пример содержимого и формата файла {@code statements.json}.
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "<package name>", "sha256_cert_fingerprints": ["6C:EC:C5:0E:34:AE....EB:0C:9B"] } }]
Приложение может отправить платформе запрос об автоматической проверке любых связей приложений, определенных в именах узлов в элементах данных его фильтров намерений, с использованием файлов {@code statements.json}, размещенных в соответствующих веб-доменах. Чтобы запросить проверку связи приложений, добавьте к каждому необходимому фильтру намерений в манифесте атрибут {@code android:autoVerify}, как показано в следующем фрагменте кода манифеста:
<activity ...> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="www.android.com" /> <data android:scheme="https" android:host="www.android.com" /> </intent-filter> </activity>
Если в манифесте приложения присутствует атрибут {@code android:autoVerify}, платформа пытается проверить связи приложений при установке приложения. Если платформе не удается сделать это, приложение не выбирается в качестве предпочтительного для обработки веб-ссылок. В следующий раз, когда пользователь нажмет на одну из ссылок, платформа снова отобразит для него соответствующее диалоговое окно.
Примечание. При тестировании существует вероятность ложных срабатываний, когда проверка завершается сбоем, но при этом пользователь установил в системном приложении «Настройки» ваше приложение как используемое по умолчанию при вызове поддерживаемых ссылок . В таком случае диалоговое окно не отображается, а ссылка ведет напрямую в ваше приложение, однако это происходит из-за настроек пользователя и не означает, что проверка пройдена успешно.
Пользователи могут изменить настройки связи приложений и выбрать предпочтительный для них способ обработки URL. Для просмотра связей приложений и управления ими можно воспользоваться системным приложением «Настройки» (в разделе Настройки > Приложения > Информация о приложении > Открывать по умолчанию.