Android
Обработка глубоких ссылок
Поиск…
Вступление
Глубокие ссылки - это URL-адреса, которые используют пользователей непосредственно для определенного контента в вашем приложении. Вы можете настроить глубокие ссылки, добавив фильтры намерений и извлечение данных из входящих намерений, чтобы привлечь пользователей на правый экран в вашем приложении.
параметры
<data> Атрибут | подробности |
|---|---|
| схема | Часть схемы URI (с учетом регистра). Примеры: http , https , ftp |
| хозяин | Хост- часть URI (с учетом регистра). Примеры: google.com , example.org |
| порт | Часть порта URI. Примеры: 80 , 443 |
| дорожка | Часть пути URI. Необходимо начинать с / . Примеры: / , /about |
| PATHPREFIX | Префикс для части пути URI. Примеры: /item , /article |
| pathPattern | Шаблон для соответствия для части пути URI. Примеры: /item/.* , /article/[0-9]* |
| MIMETYPE | Тип mime для соответствия. Примеры: image/jpeg , audio/* |
замечания
<intent-filter>
Эта комбинация элементов <action> и <category> - это то, что сообщает системе Android, что определенное действие должно запускаться, когда пользователь нажимает ссылку в другом приложении.
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data ... />
</intent-filter>
Несколько тегов <data>
Набор глубоких ссылок, которые поддерживает ваш <intent-filter> является кросс-продуктом всех элементов <data> которые вы определяете в этом фильтре-намерении. Это демонстрируют примеры с несколькими доменами, несколькими путями и несколькими схемами.
Ресурсы
- Включение Deep Links для содержимого приложения (developer.android.com)
-
<intent-filter>(developer.android.com
Простая глубокая ссылка
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<intent-filter>
<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.example.com" />
</intent-filter>
</activity>
Это позволит принять любую ссылку, начиная с http://www.example.com в качестве глубокой ссылки, чтобы начать свою MainActivity .
Несколько путей в одном домене
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<intent-filter>
<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.example.com" />
<data android:path="/" />
<data android:path="/about" />
<data android:path="/map" />
</intent-filter>
</activity>
Это запустит вашу MainActivity когда пользователь нажмет на любую из этих ссылок:
-
http://www.example.com/ -
http://www.example.com/about -
http://www.example.com/map
Несколько доменов и несколько путей
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<intent-filter>
<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.example.com" />
<data android:scheme="http"
android:host="www.example2.com" />
<data android:path="/" />
<data android:path="/map" />
</intent-filter>
</activity>
Это запустит вашу MainActivity, когда пользователь нажмет на любую из этих ссылок:
-
http://www.example.com/ -
http://www.example2.com/ -
http://www.example.com/map -
http://www.example2.com/map
И HTTP, и https для одного домена
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<intent-filter>
<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" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:path="/" />
<data android:path="/map" />
</intent-filter>
</activity>
Это запустит вашу MainActivity, когда пользователь нажмет на любую из этих ссылок:
-
http://www.example.com/ -
https://www.example.com/ -
http://www.example.com/map -
https://www.example.com/map
Получение параметров запроса
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
Uri data = intent.getData();
if (data != null) {
String param1 = data.getQueryParameter("param1");
String param2 = data.getQueryParameter("param2");
}
}
}
Если пользователь нажимает ссылку на http://www.example.com/map?param1=FOO¶m2=BAR , тогда param1 здесь будет иметь значение "FOO" а param2 будет иметь значение "BAR" .
Использование pathPrefix
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<intent-filter>
<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.example.com"
android:path="/item" />
</intent-filter>
</activity>
Это запустит вашу MainActivity, когда пользователь нажмет любую ссылку, начиная с http://www.example.com/item , например:
-
https://www.example.com/item -
http://www.example.com/item/1234 -
https://www.example.com/item/xyz/details