¿Cómo crear accesos directos dinámicos de una aplicación de Android?

En los teléfonos Android, cuando se mantiene presionada una aplicación durante más de un segundo, ciertas acciones de la aplicación aparecen en una lista. Estas acciones de la aplicación no son más que accesos directos para realizar acciones sin abrir la aplicación. Consulte la captura de pantalla a continuación.

New tab and Incognito tab are shortcuts available for Chrome

Estos accesos directos pueden ser predefinidos o codificados y nunca cambian (estáticos) en todo su ciclo de vida y, por lo tanto, se denominan accesos directos estáticos . Otro conjunto de accesos directos, que pueden cambiar con el tiempo o el contexto, se denominan accesos directos dinámicos . En este artículo, discutiremos e implementaremos accesos directos dinámicos en una aplicación de Android. El idioma principal para implementar la aplicación será Kotlin .

Nota: Para crear accesos directos estáticos de una aplicación de Android, consulte ¿Cómo crear accesos directos estáticos en la aplicación de Android?

Concepto detrás de la aplicación implementada

En este proyecto, cree una aplicación de Android en la que solo tengamos una actividad, es decir, MainActivity que muestre 2 botones , haga clic y agregue . No hicimos clic en ninguno de ellos. Lo que está programado dentro de la aplicación es mostrar 2 accesos directos inicialmente, Ask.fm e Instagram.com . Primero comprobamos si se muestran estos 2 accesos directos. Luego abrimos la aplicación y hacemos clic en el botón «Hacer clic » y cerramos la aplicación. Comprobamos de nuevo los accesos directos y ahora se cambian a Facebook.com y Google.com . El botón Click fue programado para cambiar los accesos directos dinámicamente. Volvemos a abrir la aplicación y hacemos clic en Agregarbotón y cierre la aplicación. Se agrega un nuevo atajo, NewlyAppended (caso de prueba) a la lista de Instagram y AskFM. De esta forma, se puede cambiar el número de accesos directos, así como el contexto dentro de ellos. Por lo general, el sistema Android acepta múltiples accesos directos (programados dentro de la aplicación), pero para la UX, solo muestra 4 de ellos.

dynamic shortcut

Acercarse

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

Como hemos comentado antes añade 2 Botones , uno “Click” y otro “Append” en el archivo activity_main.xml . El archivo activity_main.xml completo se proporciona a continuación.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".MainActivity">
  
    <!--Defining 2 Buttons, Click and Append-->
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="click" />
  
    <Button
        android:id="@+id/append"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/btn"
        android:layout_centerHorizontal="true"
        android:text="append" />
  
</RelativeLayout>

Paso 3: trabajar con el archivo MainActivity.kt

  • Para construir un atajo, se requieren dos elementos ShortcutManager y ShortcutBuilder . Consulte la siguiente estructura (programada en Kotlin):

var atajoManager = getSystemService(ShortcutManager::class.java)

      var sampleShortcut = ShortcutInfo.Builder(applicationContext,”sampleID”)

              .setShortLabel(“nombre de la muestra”)

              .setIcon(Icon.createWithResource(Contexto de aplicación,R.drawable.sampleIcon))

              .setIntent(Intent(Intent.ACTION_VIEW, ….sampleIntent…..))

              .construir()

atajoManager!!.Atajos dinámicos = listOf(sampleShortcut)
 

Hay cuatro elementos básicos dentro de un acceso directo:

  1. setShortLabel: la string que aparece en el acceso directo cuando se mantiene la aplicación.
  2. setIcon: La imagen que aparece contra el atajo cuando se sostiene la aplicación.
  3. setIntent : la actividad a la que redirige el acceso directo.
  4. build: construye un acceso directo con entidades dadas.
  • Hemos creado 4 intentos web que redirigen a 4 sitios web sociales diferentes Facebook, Instagram, AskFM y un caso de prueba «Recién agregado» para agregar otro intento a la lista actual.
  • En el archivo «MainActivity.kt», declárelos y configure Oyentes al hacer clic para que las acciones puedan tener lugar cuando se hace clic en los botones.
  • Los accesos directos se declaran directamente en el archivo «MainActivity.kt».
  • Ahora que todos los módulos están listos, podemos definir nuestros accesos directos en el archivo “MainActivity.kt”
  • El listof es una lista de atajos declarados que se mostrarán en esa lista. El número de accesos directos a declarar no tiene limitaciones, puede ser 1 o incluso 1000, pero para UX, el sistema permite mostrar solo hasta 4 accesos directos. Ahora consulte los códigos a continuación, se agregan comentarios para comprender cada elemento. A continuación se muestra el código completo del archivo MainActivity.kt .

MainActivity.kt

package org.geeksforgeeks.dynamic_shortcuts
  
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.Build
import android.os.Bundle
import android.widget.Button
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    @RequiresApi(Build.VERSION_CODES.N_MR1)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Shortcut Manager for managing the shortcuts
        var shortcutManager = getSystemService(ShortcutManager::class.java)
  
        // Defining a shortcut, Shortcut 1
        var shortcut1 = ShortcutInfo.Builder(applicationContext, "ID1")
                .setShortLabel("Instagram")
                .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon))
                .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.instagram.com")))
                .build()
  
        // Defining a shortcut, Shortcut 2
        var shortcut2 = ShortcutInfo.Builder(applicationContext, "ID2")
                .setShortLabel("AskFM")
                .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon))
                .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.ask.fm")))
                .build()
  
        // Show list of shortcuts when held
        shortcutManager!!.dynamicShortcuts = listOf(shortcut1, shortcut2)
  
        // When btn is clicked, changes are made to Shortcut 1 and Shortcut 2
        val btn = findViewById<Button>(R.id.btn)
  
        btn.setOnClickListener {
  
            shortcut1 = ShortcutInfo.Builder(applicationContext, "ID1")
                    .setShortLabel("Google")
                    .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon))
                    .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com")))
                    .build()
            shortcut2 = ShortcutInfo.Builder(applicationContext, "ID2")
                    .setShortLabel("Facebook")
                    .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon))
                    .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com")))
                    .build()
  
            shortcutManager!!.dynamicShortcuts = listOf(shortcut1, shortcut2)
        }
  
        // When add is clicked, a new shortcut is appended to the existing list of shortcuts
        val add = findViewById<Button>(R.id.append)
  
        add.setOnClickListener {
            var shortcut3 = ShortcutInfo.Builder(applicationContext, "ID3")
                    .setShortLabel("NewlyAppended")
                    .setIcon(Icon.createWithResource(applicationContext, R.drawable.icon))
                    .setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://www.newlyAppended.com")))
                    .build()
  
            shortcutManager!!.dynamicShortcuts = listOf(shortcut1, shortcut2, shortcut3)
        }
    }
}

Salida: ejecutar en el emulador

Publicación traducida automáticamente

Artículo escrito por aashaypawar 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 *