android - 如何仅在首次创建应用小部件时显示 Activity ?

标签 android android-activity android-service android-appwidget

我的应用程序小部件需要在首次添加到主屏幕时进行配置。我想在用户添加小部件后立即打开配置 View 。

AppWidgetProvider 没有 onCreated 事件,所以我在 onUpdate 事件上显示配置 Activity ,并在 中存储一个 bool 值code>SharedConfiguration 标记配置已经显示。有没有更简单的方法?

最佳答案

在 AppWidgetProvider XML 文件中有一个名为 android:configure 的属性

您可以使用它来指向一个 Activity,以便在将应用程序拖放到主屏幕上时启动该 Activity。例如:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure="com.bandsintown.WidgetSettingsActivity"
    android:minWidth="250dp"
    android:minHeight="110dp"
    android:minResizeWidth="180dp"
    android:minResizeHeight="110dp"
    android:resizeMode="vertical|horizontal"
    android:initialLayout="@layout/widget_layout"
    android:updatePeriodMillis="10000" />

在您选择的配置 Activity 中,用户可以做出他们想要的任何选择。您需要获取并存储小部件的 ID。在onCreate方法中,像这样获取id:

Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null)
    mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);

当他们做出选择后,使用它向您的主屏幕小部件发送一条消息,表明它已准备好显示:

Intent intent = new Intent();
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, intent);

finish();

这会得到你想要的。

关于android - 如何仅在首次创建应用小部件时显示 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338738/

相关文章:

android - 如何为android选项菜单获取白色背景主题?

android - 如何使用Android webview下载一个文本文件

android - 如何强制Android上的内存泄漏导致崩溃?

android - 如何从一个 Activity 到另一个 Activity 获取二维字符串数组

android - 在 bindService 之前等待 startService

javascript - React Native 是否将 JavaScript 编译为 Android 的 Java?

android - 在不使用 MediaRecorder 的情况下使用 Camera2 API 进行录制

android - 如何通过 Intent 从我自己的 Activity 中启动 connectbot

android - 如何在应用程序从最近的任务中被杀死后重新启动服务

java - 如何解决android服务泄露错误