Android
Obsługa głębokich linków
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
- Włączanie precyzyjnych linków do treści aplikacji (developer.android.com)
-
<intent-filter>(developer.android.com
Prosty precyzyjny link
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¶m2=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