| page.title=Связи приложений |
| page.image=images/cards/card-app-linking_2x.png |
| page.keywords=связывание приложений, прямые ссылки, намерения |
| @jd:body |
| |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| <h2>Содержание документа</h2> |
| <ol> |
| <li><a href="#web-assoc">Объявление связи с веб-сайтом</a></li> |
| <li><a href="#verfy-links">Запрос проверки связи приложений</a></li> |
| <li><a href="#user-manage">Настройки связи приложений</a></li> |
| </ol> |
| </div> |
| </div> |
| |
| <p> |
| Система намерений Android представляет собой гибкий механизм, позволяющий приложениям обрабатывать контент и запросы. |
| Многие приложения могут объявлять в своих фильтрах намерений соответствующие шаблоны URI. При нажатии пользователем на веб-ссылку |
| , у которой нет обработчика запуска по умолчанию, платформа может выдать ему диалоговое окно со списком доступных |
| приложений, объявивших соответствующие фильтры намерений. |
| </p> |
| |
| <p> |
| В Android M Developer Preview представлена поддержка связей приложений. Она выгодно отличается от существующих методов обработки ссылок, |
| предоставляя разработчикам возможность связывать приложение с принадлежащим им веб-доменом. Благодаря этой связи |
| платформа автоматически, не спрашивая у пользователя, определит приложение, которое следует использовать по умолчанию для обработки определенной |
| веб-ссылки. |
| </p> |
| |
| |
| <h2 id="web-assoc">Объявление связи с веб-сайтом</h2> |
| |
| <p> |
| Чтобы установить связь, владельцу сайта следует объявить связь с приложением. Для этого владелец |
| размещает в домене файл JSON с именем {@code statements.json}. Местопложение файла должно быть хорошо известно. |
| |
| </p> |
| |
| <pre>http://<domain>:<optional port>/.well-known/statements.json</pre> |
| |
| <p class="note"> |
| <strong>Примечание.</strong> |
| В период использования M Developer Preview проверка файла JSON выполняется по протоколу HTTP. В официальном |
| выпуске платформы она будет осуществляться по зашифрованному протоколу HTTPS. |
| </p> |
| |
| <p> |
| В этом файле JSON содержатся сведения о приложении Android, которое следует использовать в качестве обработчика по умолчанию для URL |
| в этом домене. Для определения приложения используются следующие поля: |
| </p> |
| |
| <ul> |
| <li>{@code package_name}: имя пакета, объявленное в манифесте приложения;</li> |
| |
| <li>{@code sha256_cert_fingerprints}: контрольная сумма SHA256 сертификата, который использовался для подписи вашего приложения. |
| Чтобы сгенерировать контрольную сумму, можно выполнить следующую команду в программе Java keytool: |
| <pre>keytool -list -v -keystore my-release-key.keystore</pre> |
| </li> |
| </ul> |
| |
| <p> |
| Ниже представлен пример содержимого и формата файла |
| {@code statements.json}. |
| </p> |
| |
| <pre> |
| [{ |
| "relation": ["delegate_permission/common.handle_all_urls"], |
| "target": { |
| "namespace": "android_app", |
| "package_name": "<strong><package name></strong>", |
| "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"] |
| } |
| }] |
| </pre> |
| |
| |
| <h2 id="verfy-links">Запрос проверки связи приложений</h2> |
| |
| <p> |
| Приложение может отправить платформе запрос об автоматической проверке любых связей приложений, определенных в именах узлов в элементах данных |
| его фильтров намерений, с использованием файлов {@code statements.json}, размещенных в |
| соответствующих веб-доменах. Чтобы запросить проверку связи приложений, добавьте к каждому необходимому фильтру намерений в манифесте атрибут {@code android:autoVerify}, |
| как показано в следующем фрагменте кода |
| манифеста: |
| </p> |
| |
| <pre> |
| <activity ...> |
| <intent-filter <strong>android:autoVerify="true"</strong>> |
| <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> |
| </pre> |
| |
| <p> |
| Если в манифесте приложения присутствует атрибут {@code android:autoVerify}, платформа пытается |
| проверить связи приложений при установке приложения. Если платформе не |
| удается сделать это, приложение не выбирается в качестве предпочтительного для обработки веб-ссылок. В следующий раз, когда пользователь |
| нажмет на одну из ссылок, платформа снова отобразит для него |
| соответствующее диалоговое окно. |
| </p> |
| |
| <p class="note"> |
| <strong>Примечание.</strong> При тестировании существует вероятность ложных срабатываний, когда проверка завершается |
| сбоем, но при этом пользователь установил в системном приложении «Настройки» ваше приложение как используемое по умолчанию при вызове поддерживаемых ссылок |
| . В таком случае диалоговое окно не отображается, а ссылка ведет напрямую в ваше приложение, |
| однако это происходит из-за настроек пользователя и не означает, что проверка пройдена успешно. |
| </p> |
| |
| |
| <h2 id="user-manage">Настройки связи приложений</h2> |
| |
| <p> |
| Пользователи могут изменить настройки связи приложений и выбрать предпочтительный для них способ обработки URL. Для просмотра связей приложений и управления ими |
| можно воспользоваться системным приложением «Настройки» (в разделе <strong>Настройки > Приложения > Информация о приложении > |
| Открывать по умолчанию</strong>. |
| </p> |