微件可检测性

在搭载 Android 8.0(API 级别 26)及更高版本的设备上,允许用户创建固定快捷方式的启动器也允许用户将微件固定到其主屏幕上。与固定的快捷方式类似,这些固定的微件也能让用户访问应用中的特定任务,并且可以直接从应用中添加到主屏幕,如以下视频所示。

自适应布局示例
图 2. 固定微件的示例。

允许用户固定微件

在您的应用中,您可以创建一个请求,让系统将某个 widget 固定到受支持的启动器上,具体操作步骤如下:

  1. 确保在应用的清单文件中声明微件

  2. 调用 requestPinAppWidget() 方法,如以下代码段所示:

Kotlin

val appWidgetManager = AppWidgetManager.getInstance(context)
val myProvider = ComponentName(context, ExampleAppWidgetProvider::class.java)

if (appWidgetManager.isRequestPinAppWidgetSupported()) {
    // Create the PendingIntent object only if your app needs to be notified
    // when the user chooses to pin the widget. Note that if the pinning
    // operation fails, your app isn't notified. This callback receives the ID
    // of the newly pinned widget (EXTRA_APPWIDGET_ID).
    val successCallback = PendingIntent.getBroadcast(
            /* context = */ context,
            /* requestCode = */ 0,
            /* intent = */ Intent(...),
            /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT)

    appWidgetManager.requestPinAppWidget(myProvider, null, successCallback)
}

Java

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName myProvider = new ComponentName(context, ExampleAppWidgetProvider.class);

if (appWidgetManager.isRequestPinAppWidgetSupported()) {
    // Create the PendingIntent object only if your app needs to be notified
    // when the user chooses to pin the widget. Note that if the pinning
    // operation fails, your app isn't notified. This callback receives the ID
    // of the newly pinned widget (EXTRA_APPWIDGET_ID).
    PendingIntent successCallback = PendingIntent.getBroadcast(
            /* context = */ context,
            /* requestCode = */ 0,
            /* intent = */ new Intent(...),
            /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT);

    appWidgetManager.requestPinAppWidget(myProvider, null, successCallback);
}

用户会在微件的功能最相关时,通过微件选择器或从您的应用中发现并添加您的微件。如需了解详情,请参阅发现和推广