Android
Manejo de enlaces profundos
Buscar..
Introducción
Los enlaces profundos son URL que llevan a los usuarios directamente a contenido específico en su aplicación. Puede configurar enlaces profundos agregando filtros de intención y extrayendo datos de intentos entrantes para llevar a los usuarios a la pantalla correcta en su aplicación.
Parámetros
Atributo <data> | Detalles |
---|---|
esquema | El esquema parte de una URI (distingue entre mayúsculas y minúsculas). Ejemplos: http , https , ftp |
anfitrión | La parte del host de un URI (distingue entre mayúsculas y minúsculas). Ejemplos: google.com , example.org |
Puerto | El puerto parte de un URI. Ejemplos: 80 , 443 |
camino | La parte del camino de un URI. Debe comenzar con / . Ejemplos: / , /about |
PathPrefix | Un prefijo para la parte de la ruta de un URI. Ejemplos: /item , /article |
pathPattern | Un patrón para que coincida con la parte de la ruta de una URI. Ejemplos: /item/.* , /article/[0-9]* |
tipo MIME | Un tipo mime para que coincida. Ejemplos: image/jpeg , audio/* |
Observaciones
El <intent-filter>
Esta combinación de elementos <action>
y <category>
es lo que le dice al sistema Android que una Actividad específica debe iniciarse cuando el usuario hace clic en un enlace en otra aplicación.
<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>
Múltiples etiquetas <data>
El conjunto de enlaces profundos que admite su <intent-filter>
es el producto cruzado de todos los elementos <data>
que usted define en ese filtro de intención. El dominio múltiple, la ruta múltiple y los ejemplos de múltiples esquemas lo demuestran.
Recursos
- Habilitación de enlaces profundos para contenido de la aplicación (developer.android.com)
-
<intent-filter>
(developer.android.com
Enlace profundo simple
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>
Esto aceptará cualquier enlace que comience con http://www.example.com
como un enlace profundo para iniciar su MainActivity
.
Múltiples rutas en un solo 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>
Esto lanzará su MainActivity
cuando el usuario haga clic en cualquiera de estos enlaces:
-
http://www.example.com/
-
http://www.example.com/about
-
http://www.example.com/map
Múltiples dominios y múltiples caminos.
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>
Esto lanzará su MainActivity cuando el usuario haga clic en cualquiera de estos enlaces:
-
http://www.example.com/
-
http://www.example2.com/
-
http://www.example.com/map
-
http://www.example2.com/map
Tanto http como https para el mismo 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>
Esto lanzará su MainActivity cuando el usuario haga clic en cualquiera de estos enlaces:
-
http://www.example.com/
-
https://www.example.com/
-
http://www.example.com/map
-
https://www.example.com/map
Recuperando parámetros de consulta
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");
}
}
}
Si el usuario hace clic en un enlace para http://www.example.com/map?param1=FOO¶m2=BAR
, entonces param1
tendrá un valor de "FOO"
y param2
tendrá un valor de "BAR"
.
Usando 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>
Esto lanzará su MainActivity cuando el usuario haga clic en cualquier enlace que comience con http://www.example.com/item
, como:
-
https://www.example.com/item
-
http://www.example.com/item/1234
-
https://www.example.com/item/xyz/details