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://<domain>:<optional port>/.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><package name></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<activity ...> 91 <intent-filter <strong>android:autoVerify="true"</strong>> 92 <action android:name="android.intent.action.VIEW" /> 93 <category android:name="android.intent.category.DEFAULT" /> 94 <category android:name="android.intent.category.BROWSABLE" /> 95 <data android:scheme="http" android:host="www.android.com" /> 96 <data android:scheme="https" android:host="www.android.com" /> 97 </intent-filter> 98</activity> 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>Настройки > Приложения > Информация о приложении > 122Открывать по умолчанию</strong>. 123</p> 124