應用程式動作
本文說明如何使用 .NET 多平臺應用程式 UI (.NET MAUI) IAppActions 介面,讓您建立和回應應用程式快捷方式。 應用程式快捷方式對使用者很有説明,因為它們可讓您身為應用程式開發人員,以額外的方式來呈現應用程式啟動方式。 例如,如果您正在開發電子郵件和行事曆應用程式,您可以呈現兩個不同的應用程式動作,一個直接開啟應用程式到行事曆的目前日期,另一個則開啟至電子郵件收件匣資料夾。
介面的預設實作 IAppActions
可透過 AppActions.Current 屬性取得。 IAppActions
介面和AppActions
類別都包含在 命名空間中Microsoft.Maui.ApplicationModel
。
開始使用
若要存取 AppActions
此功能,需要下列平臺特定的設定。
在 檔案中Platforms/Android/MainActivity.cs,將 和 OnNewIntent
覆寫新增OnResume
至 MainActivity
類別,以及下列IntentFilter
屬性:
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
[IntentFilter(new[] { Platform.Intent.ActionAppAction },
Categories = new[] { global::Android.Content.Intent.CategoryDefault })]
public class MainActivity : MauiAppCompatActivity {
protected override void OnResume()
{
base.OnResume();
Platform.OnResume(this);
}
protected override void OnNewIntent(Android.Content.Intent intent)
{
base.OnNewIntent(intent);
Platform.OnNewIntent(intent);
}
}
建立動作
應用程式動作可以隨時建立,但通常會在應用程式啟動時建立。 若要設定應用程式動作,請在 MauiProgram.cs 檔案中的物件上MauiAppBuilder叫ConfigureEssentials(MauiAppBuilder, Action<IEssentialsBuilder>)用 方法。 您必須在物件上 IEssentialsBuilder 呼叫兩種方法,才能啟用應用程式動作:
-
此方法會建立動作。 它會採用字串來唯一
id
title
識別動作,以及向用戶顯示的字串。 您可以選擇性地提供 subtitle 與 icon。 -
當使用者叫用應用程式動作時,會呼叫傳遞至這個方法的委派,前提是應用程式動作實例。
Id
檢查動作的 屬性,以判斷使用者啟動的應用程式動作。
下列程式代碼示範如何在應用程式啟動時設定應用程式動作:
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
})
.ConfigureEssentials(essentials =>
{
essentials
.AddAppAction("app_info", "App Info", icon: "app_info_action_icon")
.AddAppAction("battery_info", "Battery Info")
.OnAppAction(App.HandleAppActions);
});
return builder.Build();
}
回應動作
設定應用程式動作之後,OnAppAction
會針對使用者叫用的所有應用程式動作呼叫 方法。 Id
使用屬性來區分它們。 下列程式代碼示範處理應用程式動作:
public static void HandleAppActions(AppAction appAction)
{
App.Current.Dispatcher.Dispatch(async () =>
{
var page = appAction.Id switch
{
"battery_info" => new SensorsPage(),
"app_info" => new AppModelPage(),
_ => default(Page)
};
if (page != null)
{
// Assume an app with a single window.
await Application.Current.Windows[0].Page.Navigation.PopToRootAsync();
await Application.Current.Windows[0].Page.Navigation.PushAsync(page);
}
});
}
檢查是否支援應用程式動作
當您在應用程式啟動時或在應用程式正在使用時建立應用程式動作時,請檢查讀取 屬性是否支援 AppActions.Current.IsSupported
應用程式動作。
在啟動啟動程式之外建立應用程式動作
若要建立應用程式動作,請呼叫 SetAsync 方法:
if (AppActions.Current.IsSupported)
{
await AppActions.Current.SetAsync(new[] { new AppAction("app_info", "App Info", icon: "app_info_action_icon"),
new AppAction("battery_info", "Battery Info") });
}
應用程式動作的詳細資訊
如果特定版本的作業系統不支援應用程式動作, FeatureNotSupportedException 則會擲回 。
使用 建 AppAction(String, String, String, String) 構函式來設定應用程式動作的下列層面:
- Id:用來響應動作點選的唯一標識符。
- Title:要 title 顯示的 。
- Subtitle:如果支援 subtitle 在底下 title顯示 。
- Icon:必須比對每個平台上對應資源目錄中的圖示。
取得動作
您可以呼叫 AppActions.Current.GetAsync
來取得目前的應用程式動作清單。