Xamarin.Essentials: Acciones de aplicación

La clase AppActions permite crear y responder a accesos directos de aplicaciones desde el icono de la aplicación.

Introducción

Para empezar a usar esta API, lea la guía de introducción para Xamarin.Essentials con el fin de asegurarse de que la biblioteca está correctamente instalada y configurada en los proyectos.

Para acceder a la función de AppActions, se requiere la configuración específica siguiente para la plataforma.

Agregue el filtro de intención a la clase MainActivity:

[IntentFilter(
        new[] { Xamarin.Essentials.Platform.Intent.ActionAppAction },
        Categories = new[] { Android.Content.Intent.CategoryDefault })]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    ...

Luego, agregue la lógica siguiente para controlar las acciones:

protected override void OnResume()
{
    base.OnResume();

    Xamarin.Essentials.Platform.OnResume(this);
}

protected override void OnNewIntent(Android.Content.Intent intent)
{
    base.OnNewIntent(intent);

    Xamarin.Essentials.Platform.OnNewIntent(intent);
}

Creación de acciones

Agregue una referencia a Xamarin.Essentials en la clase:

using Xamarin.Essentials;

Las acciones de aplicación se pueden crear en cualquier momento, pero se crean a menudo cuando se inicia una aplicación. Llame al método SetAsync para crear la lista de acciones de la aplicación.

try
{
    await AppActions.SetAsync(
        new AppAction("app_info", "App Info", icon: "app_info_action_icon"),
        new AppAction("battery_info", "Battery Info"));
}
catch (FeatureNotSupportedException ex)
{
    Debug.WriteLine("App Actions not supported");
}

Si las acciones de aplicación no se admiten en la versión específica del sistema operativo, se producirá un elemento FeatureNotSupportedException.

Se pueden especificar las propiedades siguientes en un elemento AppAction:

  • Id: identificador único que se usa para responder a la acción pulsar.
  • Título: título visible que se va a mostrar.
  • Subtítulo: si se admite un subtítulo para mostrar bajo el título.
  • Icono: debe coincidir con los iconos del directorio de recursos correspondiente en cada plataforma.

App Actions on Homescreen

Respuesta a acciones

Cuando la aplicación empieza el registro para el evento OnAppAction. Cuando se selecciona una acción de aplicación, el evento se enviará con información relativa a qué acción se ha seleccionado.

public App()
{
    //...
    AppActions.OnAppAction += AppActions_OnAppAction;
}

void AppActions_OnAppAction(object sender, AppActionEventArgs e)
{
    // Don't handle events fired for old application instances
    // and cleanup the old instance's event handler
    if (Application.Current != this && Application.Current is App app)
    {
        AppActions.OnAppAction -= app.AppActions_OnAppAction;
        return;
    }
    MainThread.BeginInvokeOnMainThread(async () =>
    {
        await Shell.Current.GoToAsync($"//{e.AppAction.Id}");
    });
}

GetActions

Se puede obtener la lista actual de las acciones de aplicación mediante una llamada a AppActions.GetAsync().

API