Crear Vínculos profundos al Contenido de la Aplicación

Cuando un enlace al que se hace clic o una solicitud programática invoca una intent de URI web, el sistema Android prueba cada una de las siguientes acciones, en orden secuencial, hasta que la solicitud se realiza correctamente:

  1. Abra la aplicación preferida del usuario que pueda manejar el URI, si se ha designado una.
  2. Abra la única aplicación disponible que puede manejar el URI.
  3. Permite al usuario seleccionar una aplicación en un cuadro de diálogo.

Siga los pasos a continuación para crear y probar enlaces a su contenido. También puedes usar el Asistente de Enlaces de aplicaciones en Android Studio para agregar enlaces de aplicaciones de Android.

Agregar filtros de intents para enlaces entrantes

Para crear un enlace al contenido de la aplicación, agregue un filtro de intents que contenga estos elementos y valores de atributo en su manifiesto:

<action>Especifique la acción de intentsACTION_VIEWpara que se pueda acceder al filtro de intents desde la búsqueda de Google.<data>Agregue una o más etiquetas<data>, cada una de las cuales representa un formato URI que se resuelve en la actividad. Como mínimo, la etiqueta<data>debe incluir el atributoandroid:scheme.

Puede agregar más atributos para refinar aún más el tipo de URI que acepta la actividad. Por ejemplo, puede tener varias actividades que aceptan URI similares, pero que difieren simplemente en función del nombre de la ruta. En este caso, use el atributo android:path o sus variantes pathPattern o pathPrefix para diferenciar qué actividad debe abrir el sistema para diferentes rutas de URI.

<category>Incluye la categoríaBROWSABLE. Es necesario para que el filtro de intents sea accesible desde un navegador web. Sin ella, hacer clic en un enlace en un navegador no se puede resolver en tu aplicación.

También incluye la categoría DEFAULT.Esto permite que tu app responda a intenciones implícitas. Sin esto, la actividad solo se puede iniciar si la intent especifica el nombre del componente de la aplicación.

El siguiente fragmento XML muestra cómo se puede especificar un filtro de intents en el manifiesto para la vinculación profunda. Los URI "example://gizmos" y"http://www.example.com/gizmos" resuelven esta actividad.

<activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_view_http_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos" --> <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> <!-- note that the leading "/" is required for pathPrefix--> </intent-filter> <intent-filter android:label="@string/filter_view_example_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos" --> <data android:scheme="example" android:host="gizmos" /> </intent-filter></activity>

Observe que los dos filtros de intents solo difieren por el elemento <data>.Aunque es posible incluir varios elementos <data> en el mismo filtro, es importante que cree filtros separados cuando su intención sea declarar UNURLS único (como una combinación específica de scheme y host), ya que varios elementos <data> en el mismo filtro de intents se fusionan para tener en cuenta todas las variaciones de sus atributos combinados. Por ejemplo, considere lo siguiente:

<intent-filter> ... <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="app" android:host="open.my.app" /></intent-filter>

Puede parecer que esto solo admite https://www.example.com yapp://open.my.app. Sin embargo, en realidad es compatible con esos dos, más estos:app://www.example.com y https://open.my.app.

Una vez que hayas agregado filtros de intents con URI para contenido de actividad a tu appmanifest, Android puede enrutar cualquier Intentque tenga URI coincidentes a tu app en tiempo de ejecución.

Para obtener más información sobre la definición de filtros de intents, consulta Permitir que Otras Aplicaciones Inicien tu Actividad.

Leer datos de intents entrantes

Una vez que el sistema inicie su actividad a través de un filtro de intents, puede usar los datos proporcionados por Intent para determinar lo que necesita procesar. Llame a los métodos getData() ygetAction()para recuperar los datos y la acción asociados con el Intent entrante. Puede cancelar estos métodos en cualquier momento durante el ciclo de vida de la actividad, pero generalmente debe hacerlo durante las devoluciones de llamada tempranas, como onCreate() oonStart().

Aquí hay un fragmento que muestra cómo recuperar datos de unIntent:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) val action: String? = intent?.action val data: Uri? = intent?.data}

Java

@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData();}

Siga estas prácticas recomendadas para mejorar la experiencia del usuario:

  • El enlace profundo debe llevar a los usuarios directamente al contenido,sin indicaciones, páginas intersticiales ni inicios de sesión. Asegúrese de que los usuarios pueden ver el contenido de la aplicación incluso si nunca la abrieron previamente.Está bien preguntar a los usuarios en interacciones posteriores o cuando abren la aplicación desde el Lanzador.
  • Siga la guía de diseño descrita en Navegación con Respaldo y hacia arriba para que su aplicación coincida con las expectativas de los usuarios de navegación hacia atrás después de que ingresen a su aplicación a través de un enlace profundo.

Prueba tus enlaces profundos

Puedes usar Android DebugBridge con la herramienta administrador de actividades (am) para probar que el filtro de intents es el que especificaste para la resolución de enlaces profundos a la actividad correcta de la aplicación. Puede ejecutar el comando adb contra un dispositivo o un emulador.

La sintaxis general para probar un URI de filtro de intents con adb es:

$ adb shell am start -W -a android.intent.action.VIEW -d <URI> <PACKAGE>

Por ejemplo, el siguiente comando intenta ver una actividad de la aplicación de destino que está asociada con el URI especificado.

$ adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android

La declaración de manifiesto y el controlador de intenciones que configuraste anteriormente definen la conexión entre tu aplicación y un sitio web y qué hacer con los enlaces entrantes. Sin embargo, para que el sistema trate tu aplicación como el controlador predeterminado para un conjunto de URI, también debes solicitar que el sistema verifique esta conexión. La siguiente lección explica cómo implementar esta verificación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Previous post ¿Quién es Toni Kukoc? El ex jugador de los Chicago Bulls y estrella de The Last Dance de Michael Jordan
Next post Clínica de Medicina Natural con tratamiento de Crup y Asma