Xamarin.Essentials: Действия приложения
Класс AppActions позволяет создавать сочетания клавиш для значка приложения и настраивать реакцию на них.
Начало работы
Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.
Для доступа к функции AppActions нужно создать описанную ниже конфигурацию для конкретной платформы.
Добавьте фильтр намерения в класс MainActivity
:
[IntentFilter(
new[] { Xamarin.Essentials.Platform.Intent.ActionAppAction },
Categories = new[] { Android.Content.Intent.CategoryDefault })]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
...
Затем добавьте следующую логику для обработки действий:
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);
}
Создание действий
Добавьте ссылку на Xamarin.Essentials в своем классе:
using Xamarin.Essentials;
Действия приложения можно создавать в любое время, но зачастую они создаются при запуске приложения. Вызовите метод SetAsync
, чтобы создать список действий для приложения.
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");
}
Если действия приложения не поддерживаются в конкретной версии операционной системы, будет вызвано исключение FeatureNotSupportedException
.
Для AppAction
можно задать следующие свойства:
- Идентификатор: уникальный идентификатор, используемый для реагирования на касание действия.
- Title — отображаемый заголовок.
- Подзаголовок: если поддерживается подзаголовок для отображения под заголовком.
- Значок: должен соответствовать значкам в соответствующем каталоге ресурсов на каждой платформе.
Реагирование на действия
При запуске приложения зарегистрируйтесь для получения события OnAppAction
. При выборе действия приложения будет отправлено событие со сведениями о том, какое действие было выбрано.
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
Текущий список действий приложения можно получить, вызвав AppActions.GetAsync()
.