Android
Gestire i collegamenti profondi
Ricerca…
introduzione
I link diretti sono URL che portano gli utenti direttamente a contenuti specifici nella tua app. Puoi impostare i link diretti aggiungendo filtri di intent ed estraendo i dati dagli intenti in entrata per indirizzare gli utenti alla schermata giusta nella tua app.
Parametri
<data> Attributo | Dettagli |
|---|---|
| schema | La parte di schema di un URI (sensibile al maiuscolo / minuscolo). Esempi: http , https , ftp |
| ospite | La parte host di un URI (sensibile al maiuscolo / minuscolo). Esempi: google.com , example.org |
| porta | La parte di porta di un URI. Esempi: 80 , 443 |
| sentiero | La parte del percorso di un URI. Deve iniziare con / . Esempi: / , /about |
| Pathprefix | Un prefisso per la parte del percorso di un URI. Esempi: /item , /article |
| pathPattern | Un modello da abbinare per la parte del percorso di un URI. Esempi: /item/.* , /article/[0-9]* |
| mimeType | Un tipo mime da abbinare. Esempi: image/jpeg , audio/* |
Osservazioni
<intent-filter>
Questa combinazione di elementi <action> e <category> è ciò che dice al sistema Android che deve essere lanciata un'attività specifica quando l'utente fa clic su un link in un'altra applicazione.
<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>
Più tag <data>
La serie di link diretti supportati da <intent-filter> è il prodotto incrociato di tutti gli elementi <data> definiti in tale filtro intent. Il dominio multiplo, il percorso multiplo e più esempi di schemi lo dimostrano.
risorse
- Abilitazione di collegamenti profondi per il contenuto dell'app (developer.android.com)
-
<intent-filter>(developer.android.com
Semplice link diretto
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>
Ciò accetterà qualsiasi collegamento che inizia con http://www.example.com come link MainActivity per avviare MainActivity .
Percorsi multipli su un singolo dominio
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>
Questo avvierà MainActivity quando l'utente fa clic su uno di questi collegamenti:
-
http://www.example.com/ -
http://www.example.com/about -
http://www.example.com/map
Domini multipli e percorsi multipli
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>
Questo avvierà MainActivity quando l'utente fa clic su uno di questi collegamenti:
-
http://www.example.com/ -
http://www.example2.com/ -
http://www.example.com/map -
http://www.example2.com/map
Sia http e https per lo stesso dominio
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>
Questo avvierà MainActivity quando l'utente fa clic su uno di questi collegamenti:
-
http://www.example.com/ -
https://www.example.com/ -
http://www.example.com/map -
https://www.example.com/map
Recupero dei parametri di query
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");
}
}
}
Se l'utente fa clic su un link a http://www.example.com/map?param1=FOO¶m2=BAR , quindi param1 qui avrà un valore di "FOO" e param2 avrà un valore di "BAR" .
Utilizzando 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>
Questo avvierà la tua MainActivity quando l'utente fa clic su qualsiasi link a partire da http://www.example.com/item , ad esempio:
-
https://www.example.com/item -
http://www.example.com/item/1234 -
https://www.example.com/item/xyz/details