Xamarin.Essentials: Akce aplikace
Třída AppActions umožňuje vytvořit zástupce aplikace a reagovat na ně z ikony aplikace.
Pokud chcete začít používat toto rozhraní API, přečtěte si úvodní příručkuXamarin.Essentials, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.
Pro přístup k funkcím AppActions se vyžaduje následující nastavení specifické pro platformu.
Přidejte do předmětu filtr MainActivity
záměru:
[IntentFilter(
new[] { Xamarin.Essentials.Platform.Intent.ActionAppAction },
Categories = new[] { Android.Content.Intent.CategoryDefault })]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
...
Pak přidejte následující logiku pro zpracování akcí:
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);
}
Přidejte do Xamarin.Essentials předmětu odkaz:
using Xamarin.Essentials;
Akce aplikace je možné kdykoli vytvořit, ale často se vytvářejí při spuštění aplikace. SetAsync
Voláním metody vytvořte seznam akcí pro vaši aplikaci.
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");
}
Pokud akce aplikace nejsou podporovány v konkrétní verzi operačního systému, FeatureNotSupportedException
vyvolá se.
Následující vlastnosti lze nastavit na AppAction
:
- ID: Jedinečný identifikátor použitý k reakci na klepnutí na akci.
- Název: viditelný název, který se má zobrazit.
- Podnadpis: Pokud se pod názvem zobrazí pod názvem podporovaný dílčí název.
- Ikona: Musí se shodovat s ikonami v odpovídajícím adresáři prostředků na jednotlivých platformách.
Když aplikace spustí registraci události OnAppAction
. Když je vybrána akce aplikace, událost se odešle s informacemi o tom, která akce byla vybrána.
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}");
});
}
Aktuální seznam akcí aplikace můžete získat voláním AppActions.GetAsync()
.