Szukaj…


Wprowadzenie

Precyzyjne linki to adresy URL, które prowadzą użytkowników bezpośrednio do określonych treści w Twojej aplikacji. Możesz skonfigurować precyzyjne linki, dodając filtry zamiarów i wyodrębniając dane z przychodzących zamiarów, aby kierować użytkowników do odpowiedniego ekranu w aplikacji.

Parametry

<data> Atrybut Detale
schemat Część schematu identyfikatora URI (wielkość liter ma znaczenie). Przykłady: http , https , ftp
gospodarz Część hosta identyfikatora URI (z rozróżnianiem wielkości liter). Przykłady: google.com , example.org
Port Część portu identyfikatora URI. Przykłady: 80 , 443
ścieżka Część ścieżki identyfikatora URI. Musi zaczynać się od / . Przykłady: / , /about
pathPrefix Prefiks części ścieżki URI. Przykłady: /item , /article
pathPattern Wzorzec pasujący do części ścieżki identyfikatora URI. Przykłady: /item/.* , /article/[0-9]*
mimeType Dopasowany typ mime. Przykłady: image/jpeg , audio/*

Uwagi

<intent-filter>

Ta kombinacja elementów <action> i <category> informuje system Android, że określone działanie należy uruchomić, gdy użytkownik kliknie link w innej aplikacji.

<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>

Wiele tagów <data>

Zestaw precyzyjnych linków obsługiwanych przez <intent-filter> jest produktem krzyżowym wszystkich elementów <data> zdefiniowanych w tym filtrze intencyjnym. Pokazują to przykłady wielu domen, wielu ścieżek i wielu schematów.

Zasoby

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>

Spowoduje to zaakceptowanie dowolnego linku zaczynającego się od http://www.example.com jako MainActivity linku do rozpoczęcia MainActivity .

Wiele ścieżek w jednej domenie

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>

Spowoduje to uruchomienie MainActivity gdy użytkownik kliknie którykolwiek z poniższych łączy:

  • http://www.example.com/
  • http://www.example.com/about
  • http://www.example.com/map

Wiele domen i wiele ścieżek

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>

Spowoduje to uruchomienie MainActivity, gdy użytkownik kliknie którykolwiek z poniższych łączy:

  • http://www.example.com/
  • http://www.example2.com/
  • http://www.example.com/map
  • http://www.example2.com/map

Zarówno http, jak i https dla tej samej domeny

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>

Spowoduje to uruchomienie MainActivity, gdy użytkownik kliknie którykolwiek z poniższych łączy:

  • http://www.example.com/
  • https://www.example.com/
  • http://www.example.com/map
  • https://www.example.com/map

Pobieranie parametrów zapytania

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");
        }
    }

}

Jeśli użytkownik kliknie link http://www.example.com/map?param1=FOO&param2=BAR , wówczas parametr param1 będzie miał tutaj wartość "FOO" a parametr param2 będzie miał wartość "BAR" .

Korzystanie z 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>

Spowoduje to uruchomienie MainActivity, gdy użytkownik kliknie dowolny link zaczynający się od http://www.example.com/item , taki jak:

  • 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow