blob: f991717b1ea6e093efbe530008dfa9cb1b6264ce [file] [log] [blame]
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://&lt;domain&gt;:&lt;optional port&gt;/.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>&lt;package name&gt;</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>
&lt;activity ...&gt;
&lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
&lt;action android:name="android.intent.action.VIEW" /&gt;
&lt;category android:name="android.intent.category.DEFAULT" /&gt;
&lt;category android:name="android.intent.category.BROWSABLE" /&gt;
&lt;data android:scheme="http" android:host="www.android.com" /&gt;
&lt;data android:scheme="https" android:host="www.android.com" /&gt;
&lt;/intent-filter&gt;
&lt;/activity&gt;
</pre>
<p>
Если в манифесте приложения присутствует атрибут {@code android:autoVerify}, платформа пытается
проверить связи приложений при установке приложения. Если платформе не
удается сделать это, приложение не выбирается в качестве предпочтительного для обработки веб-ссылок. В следующий раз, когда пользователь
нажмет на одну из ссылок, платформа снова отобразит для него
соответствующее диалоговое окно.
</p>
<p class="note">
<strong>Примечание.</strong> При тестировании существует вероятность ложных срабатываний, когда проверка завершается
сбоем, но при этом пользователь установил в системном приложении «Настройки» ваше приложение как используемое по умолчанию при вызове поддерживаемых ссылок
. В таком случае диалоговое окно не отображается, а ссылка ведет напрямую в ваше приложение,
однако это происходит из-за настроек пользователя и не означает, что проверка пройдена успешно.
</p>
<h2 id="user-manage">Настройки связи приложений</h2>
<p>
Пользователи могут изменить настройки связи приложений и выбрать предпочтительный для них способ обработки URL. Для просмотра связей приложений и управления ими
можно воспользоваться системным приложением «Настройки» разделе <strong>Настройки &gt; Приложения &gt; Информация о приложении &gt;
Открывать по умолчанию</strong>.
</p>