• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Связи приложений
2page.image=images/cards/card-app-linking_2x.png
3page.keywords=связывание приложений, прямые ссылки, намерения
4@jd:body
5
6<div id="qv-wrapper">
7  <div id="qv">
8    <h2>Содержание документа</h2>
9      <ol>
10        <li><a href="#web-assoc">Объявление связи с веб-сайтом</a></li>
11        <li><a href="#verfy-links">Запрос проверки связи приложений</a></li>
12        <li><a href="#user-manage">Настройки связи приложений</a></li>
13      </ol>
14  </div>
15</div>
16
17<p>
18  Система намерений Android представляет собой гибкий механизм, позволяющий приложениям обрабатывать контент и запросы.
19  Многие приложения могут объявлять в своих фильтрах намерений соответствующие шаблоны URI. При нажатии пользователем на веб-ссылку
20, у которой нет обработчика запуска по умолчанию, платформа может выдать ему диалоговое окно со списком доступных
21 приложений, объявивших соответствующие фильтры намерений.
22</p>
23
24<p>
25  В Android M Developer Preview представлена поддержка связей приложений. Она выгодно отличается от существующих методов обработки ссылок,
26 предоставляя разработчикам возможность связывать приложение с принадлежащим им веб-доменом. Благодаря этой связи
27платформа автоматически, не спрашивая у пользователя, определит приложение, которое следует использовать по умолчанию для обработки определенной
28веб-ссылки.
29</p>
30
31
32<h2 id="web-assoc">Объявление связи с веб-сайтом</h2>
33
34<p>
35  Чтобы установить связь, владельцу сайта следует объявить связь с приложением. Для этого владелец
36размещает в домене файл JSON с именем {@code statements.json}. Местопложение файла должно быть хорошо известно.
37
38</p>
39
40<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
41
42<p class="note">
43  <strong>Примечание.</strong>
44  В период использования M Developer Preview проверка файла JSON выполняется по протоколу HTTP. В официальном
45выпуске платформы она будет осуществляться по зашифрованному протоколу HTTPS.
46</p>
47
48<p>
49  В этом файле JSON содержатся сведения о приложении Android, которое следует использовать в качестве обработчика по умолчанию для URL
50в этом домене. Для определения приложения используются следующие поля:
51</p>
52
53<ul>
54  <li>{@code package_name}: имя пакета, объявленное в манифесте приложения;</li>
55
56  <li>{@code sha256_cert_fingerprints}: контрольная сумма SHA256 сертификата, который использовался для подписи вашего приложения.
57    Чтобы сгенерировать контрольную сумму, можно выполнить следующую команду в программе Java keytool:
58    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
59  </li>
60</ul>
61
62<p>
63  Ниже представлен пример содержимого и формата файла
64{@code statements.json}.
65</p>
66
67<pre>
68[{
69  "relation": ["delegate_permission/common.handle_all_urls"],
70  "target": {
71    "namespace": "android_app",
72    "package_name": "<strong>&lt;package name&gt;</strong>",
73    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
74  }
75}]
76</pre>
77
78
79<h2 id="verfy-links">Запрос проверки связи приложений</h2>
80
81<p>
82  Приложение может отправить платформе запрос об автоматической проверке любых связей приложений, определенных в именах узлов в элементах данных
83его фильтров намерений, с использованием файлов {@code statements.json}, размещенных в
84соответствующих веб-доменах. Чтобы запросить проверку связи приложений, добавьте к каждому необходимому фильтру намерений в манифесте атрибут {@code android:autoVerify},
85как показано в следующем фрагменте кода
86манифеста:
87</p>
88
89<pre>
90&lt;activity ...&gt;
91    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
92        &lt;action android:name="android.intent.action.VIEW" /&gt;
93        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
94        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
95        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
96        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
97    &lt;/intent-filter&gt;
98&lt;/activity&gt;
99</pre>
100
101<p>
102  Если в манифесте приложения присутствует атрибут {@code android:autoVerify}, платформа пытается
103проверить связи приложений при установке приложения. Если платформе не
104удается сделать это, приложение не выбирается в качестве предпочтительного для обработки веб-ссылок. В следующий раз, когда пользователь
105нажмет на одну из ссылок, платформа снова отобразит для него
106соответствующее диалоговое окно.
107</p>
108
109<p class="note">
110  <strong>Примечание.</strong> При тестировании существует вероятность ложных срабатываний, когда проверка завершается
111сбоем, но при этом пользователь установил в системном приложении «Настройки» ваше приложение как используемое по умолчанию при вызове поддерживаемых ссылок
112. В таком случае диалоговое окно не отображается, а ссылка ведет напрямую в ваше приложение,
113однако это происходит из-за настроек пользователя и не означает, что проверка пройдена успешно.
114</p>
115
116
117<h2 id="user-manage">Настройки связи приложений</h2>
118
119<p>
120  Пользователи могут изменить настройки связи приложений и выбрать предпочтительный для них способ обработки URL. Для просмотра связей приложений и управления ими
121можно воспользоваться системным приложением «Настройки» (в разделе <strong>Настройки &gt; Приложения &gt; Информация о приложении &gt;
122Открывать по умолчанию</strong>.
123</p>
124