Поиск…


Вступление

Глубокие ссылки - это 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> которые вы определяете в этом фильтре-намерении. Это демонстрируют примеры с несколькими доменами, несколькими путями и несколькими схемами.

Ресурсы

Простая глубокая ссылка

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&param2=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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow