Android: enlaces profundos con Kotlin

Los enlaces profundos se ven en la mayoría de las aplicaciones donde los usuarios pueden usar estos enlaces para redirigir a cualquier pantalla o actividad específica dentro de la aplicación. También podemos pasar datos usando estos enlaces dentro de nuestra aplicación. En este artículo, veremos la implementación de enlaces profundos en aplicaciones de Android usando Kotlin. 

Nota : si está buscando implementar Deep Links en Android usando Java. Enlaces profundos en Android usando Java

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Cómo crear/iniciar un nuevo proyecto en Android Studio

Paso 2: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml. 

XML

<?xml version="1.0" encoding="utf-8"?>
<!--on below line we are creating a swipe to refresh layout-->
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:orientation="vertical"
    tools:context=".MainActivity">
  
    <!--text view for displaying heading-->
    <TextView
        android:id="@+id/idTVHead"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/idTVMsg"
        android:layout_margin="4dp"
        android:gravity="center"
        android:padding="4dp"
        android:text="@string/app_name"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="20sp"
        android:textStyle="bold" />
  
    <!--text view for displaying a message-->
    <TextView
        android:id="@+id/idTVMsg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="20dp"
        android:padding="4dp"
        android:text="Message"
        android:textAlignment="center"
        android:textAllCaps="false"
        android:textColor="@color/purple_200"
        android:textSize="20sp"
        android:textStyle="bold" />
  
</RelativeLayout>

Paso 3: trabajar con el archivo AndroidManifest.xml

Vaya a la aplicación > AndroidManifest.xml y agréguele el siguiente código. Como estamos creando un enlace profundo para nuestro archivo MainActivity.kt, tenemos que agregar este código en la parte MainActivity. A continuación se muestra el código que se agregará en el archivo AndroidManifext.xml. Se agregan comentarios en el código para conocer con más detalle. 

XML

<!--as we want to open main activity from our link so we are specifying
    only in main activity or we can specify that in different activity as well
    on below line we are adding intent filter to our MainActivity-->
<intent-filter>
  
    <!--below line is to set the action to our intent to view-->
    <action android:name="android.intent.action.VIEW" />
  
    <!--on below line we are adding a default category to our intent-->
    <category android:name="android.intent.category.DEFAULT" />
  
    <!--on below line we are adding a category to make our app browsable-->
    <category android:name="android.intent.category.BROWSABLE" />
  
    <!--on below line we are specifying the host name and
        the scheme type from which we will be calling our app-->
    <data
            android:host="www.chaitanyamunje.com"
            android:scheme="https" />
</intent-filter>
  
<!--below is the same filter as above just the scheme is changed to http -->
<!--so we can open our app with the url starting with https and http as well-->
<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:host="www.chaitanyamunje.com"
        android:scheme="http" />
</intent-filter>

A continuación se muestra el código completo del archivo AndroidManifest.xml.

XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gtappdevelopers.kotlingfgproject">
  
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.KotlinGFGProject"
        android:usesCleartextTraffic="true">
          
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
  
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
  
            <!--as we want to open main activity from our link so we are specifying
                only in main activity or we can specify that in different activity as well-->
            <!--on below line we are adding intent filter to our MainActivity-->
            <intent-filter>
                <!--below line is to set the action to our intent to view-->
                <action android:name="android.intent.action.VIEW" />
                <!--on below line we are adding a default category to our intent-->
                <category android:name="android.intent.category.DEFAULT" />
                <!--on below line we are adding a category to make our app browsable-->
                <category android:name="android.intent.category.BROWSABLE" />
                <!--on below line we are specifying the host name and
                    the scheme type from which we will be calling our app-->
                <data
                    android:host="www.chaitanyamunje.com"
                    android:scheme="https" />
            </intent-filter>
  
            <!--below is the same filter as above just the scheme is changed to http -->
            <!--so we can open our app with the url starting with https and http as well-->
            <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:host="www.chaitanyamunje.com"
                    android:scheme="http" />
            </intent-filter>
  
        </activity>
  
    </application>
  
</manifest>

Paso 4: trabajar con el archivo MainActivity.kt

Vaya a aplicación>java>nombre del paquete de su aplicación>archivo MainActivity.kt y agréguele el siguiente código. Se agregan comentarios en el código para conocer en detalle. 

Kotlin

package com.gtappdevelopers.kotlingfgproject
  
import android.net.Uri
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
  
    // on below line we are creating 
    // variables for our text view
    lateinit var msgTV: TextView
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
          
        // on below line we are initializing
        // our variable with their ids.
        msgTV = findViewById(R.id.idTVMsg)
  
        // getting the data from our
        // intent in our uri.
        val uri: Uri? = intent.data
  
        // checking if the uri is null or not.
        if (uri != null) {
            // if the uri is not null then we are getting the
            // path segments and storing it in list.
            val parameters: List<String> = uri.getPathSegments()
  
            // after that we are extracting string from that parameters.
            val param = parameters[parameters.size - 1]
  
            // on below line we are setting
            // that string to our text view
            // which we got as params.
            msgTV.setText(param)
        }
    }
}

Ahora ejecute su aplicación para ver el resultado. 

Producción:

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *