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

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&param2=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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow