1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
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>
|