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