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