Generalidades

Android: Navegación mediante accesos directos de aplicaciones | Por Vinod Buster | Marzo de 2022

Android Navegacion mediante accesos directos de aplicaciones Por Vinod

Los accesos directos en las aplicaciones están diseñados para realizar tareas comunes en las aplicaciones desde la pantalla de inicio. Se puede acceder a ciertas pantallas manteniendo presionado el ícono de la aplicación y seleccionando el atajo apropiado.

  1. atajo estático
  2. Atajos dinámicos
  3. Atajos fijos

Estos accesos directos están preprogramados. Están incluidos en su archivo .apk. Su número y actividad siguen siendo los mismos hasta que lanzas una nueva versión del programa.

Estos accesos directos se crean sobre la marcha y se agregan a la lista de accesos directos. Se pueden generar utilizando estadísticas de uso y pueden evolucionar con el tiempo. Para actualizar sus atajos dinámicos, no necesita lanzar una nueva versión de la aplicación.

Estos se utilizan para ciertas acciones iniciadas por el usuario. Por ejemplo, es posible que un usuario desee anclar un sitio web específico al lanzador. Esto es ventajoso porque le permite al usuario completar ciertas acciones, como navegar por un sitio web en un solo paso, más rápido que con una instancia de navegador normal.

¿Cómo podemos ponerlo en práctica?

primer paso: Necesitamos agregar algunos metadatos a la actividad del iniciador, así que agregue el siguiente fragmento de código a su archivo AndroidManifest.xml. De lo contrario, su acceso directo no aparecerá. En la práctica, cualquier actividad con un filtro de propósito se establecerá como una acción. Android resources especifica la ubicación del archivo de acceso directo en la carpeta de recursos.

1648402624 362 Android Navegacion mediante accesos directos de aplicaciones Por Vinod
xml version="1.0" encoding="utf-8"?>
<
manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kl.appshortcut">

<

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.AppShortcut">
<
activity android:name=".MainActivity3" />
<
activity android:name=".MainActivity2" />
<
activity android:name=".MainActivity">
<
intent-filter>
<
action android:name="android.intent.action.MAIN" />

<

category android:name="android.intent.category.LAUNCHER" />
intent-filter>
<
meta-data android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
activity>
application>

manifest>

Paso 2: Navegue a atajos.xml que contiene definiciones de atajos. Es una buena idea configurar tools:targetApi=»25″ porque esta función solo está disponible para el nivel de API 25 y superior. Para ver el acceso directo, ejecute el programa en un emulador o dispositivo cuando haya terminado.

xml version="1.0" encoding="utf-8"?>
<
shortcuts xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="25">

<

shortcut
android:shortcutId="explore"
android:enabled="true"
android:icon="@drawable/ic_explore"
android:shortcutShortLabel="@string/explore"
android:shortcutLongLabel="@string/explore"
android:shortcutDisabledMessage="@string/explore">
<
intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.kl.appshortcut"
android:targetClass="com.kl.appshortcut.MainActivity">


intent>
<
categories android:name="android.shortcut.conversation" />
shortcut>

<

shortcut
android:shortcutId="maskup"
android:enabled="true"
android:icon="@drawable/ic_masks"
android:shortcutShortLabel="@string/maskup"
android:shortcutLongLabel="@string/maskup"
android:shortcutDisabledMessage= "@string/maskup">
<
intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.kl.appshortcut"
android:targetClass="com.kl.appshortcut.MainActivity2">
intent>
<
categories android:name="android.shortcut.conversation" />
shortcut>

<

shortcut
android:shortcutId="store"
android:enabled="true"
android:icon="@drawable/ic_store"
android:shortcutShortLabel="@string/store"
android:shortcutLongLabel="@string/store"
android:shortcutDisabledMessage="@string/store">
<
intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.kl.appshortcut"
android:targetClass="com.kl.appshortcut.MainActivity3">
intent>
<
categories android:name="android.shortcut.conversation" />
shortcut>
shortcuts>

La segunda forma de accesos directos son los accesos directos dinámicos, que requieren interacción (crear, destruir y actualizar) utilizando ShortcutManager. Puede obtener ShortcutManager visitando

val shortcutManager = getSystemService(ShortcutManager::class.java)

A continuación se muestra el fragmento de código para el acceso directo.

import android.annotation.TargetApi
import android.content.Intent
import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.graphics.drawable.Icon
import android.net.Uri
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import com.kl.appshortcut.R

class MainActivity : AppCompatActivity() {

private val actionKey = "intent"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
buttons()
}

private fun buttons() {

findViewById<Button>(R.id.button2).setOnClickListener {
openShortCut()
}

findViewById<Button>(R.id.button4).setOnClickListener {
removeShortcuts()
}
}

@TargetApi(25)
private fun openShortCut() {
val shortcutManager = getSystemService(ShortcutManager::class.java)

val intent = Intent(applicationContext, MainActivity::class.java)
intent.action = actionKey

val shortcut1 = ShortcutInfo.Builder(applicationContext, "mask_up")
.setShortLabel("MaskUp Dynamic")
.setRank()
.setLongLabel("Open Maskup Dynamic")
.setIcon(Icon.createWithResource(applicationContext, R.drawable.ic_masks))
.setIntent(intent)
.build()

val shortcut2 = ShortcutInfo.Builder(applicationContext, "web_link")
.setShortLabel("google Dynamic")
.setRank(1)
.setLongLabel("Open google Dynamic")
.setIcon(Icon.createWithResource(applicationContext, R.drawable.ic_web))
.setIntent(
Intent(
Intent.ACTION_VIEW,
Uri.parse("https://www.google.com/")
)
)
.build()

shortcutManager?.dynamicShortcuts = listOf(shortcut1, shortcut2)
}

@TargetApi(25)
private fun removeShortcuts() {
val manager = getSystemService(ShortcutManager::class.java)
manager.removeAllDynamicShortcuts()
}
}

Debido a que ShortcutManager es un servicio del sistema, debe estar en una actividad. Además, dado que esto solo funciona en Android 7.1, es una buena idea agregar la anotación @TargetApi(25) a este código para evitar errores de compilación y realizar una verificación de versión antes de llamar a estos métodos.

En el panel de atajos, el método setRank() se usa para clasificar los atajos dinámicos. Se utiliza para determinar en qué parte de la lista debe aparecer el acceso directo, siendo 0 (cero) el valor más bajo.

Ahora que hemos creado el atajo, necesitamos convertirlo en un atajo dinámico.

shortcutManager?.dynamicShortcuts = list0f(shortcut1, shortcut2)

Los métodos abreviados dinámicos aceptan una matriz como entrada. Hice una lista porque tenemos dos atajos.

Se eliminarán todos los accesos directos dinámicos

manager.removeAllDynamicShortcuts().

Inicie su aplicación y mantenga presionado el botón de presión prolongada en el ícono de la aplicación en el lanzador. Deberías ver algo en este sentido:

1648402624 766 Android Navegacion mediante accesos directos de aplicaciones Por Vinod
1648402624 144 Android Navegacion mediante accesos directos de aplicaciones Por Vinod
Los accesos directos estáticos están a la derecha y los accesos directos dinámicos están a la izquierda.

LEER  Base de datos de habitaciones en Kotlin. ¿Qué es una base de datos de habitaciones? | Autor: Noorul Harisha | Diciembre de 2021

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba