AppWidget:在某些设备上完成配置活动后,不会显示实例

时间:2015-10-06 09:19:54

标签: android android-appwidget

在主屏幕上添加appwidget的新实例时,我在某些设备上遇到了奇怪的行为。

我有配置活动的AppWidget应用程序。正如在appwidget的教程更新中所说,我必须自己做。

    public static void updateWidgetAndSendIntent (Activity activity, int mAppWidgetId, boolean isUpdate) {
    updateWidgets(activity);
    if (!isUpdate) {
        Intent resultIntent = new Intent();
        resultIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
        activity.setResult(Activity.RESULT_OK, resultIntent);
        activity.finish();
    }
}

    public static void updateWidgets(Context context) {
    new ManagerUpdateWidget(context).updateAllWidgetInstances();
}

ManagerUpdateWidget.java

    public void updateAllWidgetInstances() {

    Bitmap widget = getCustomView(context);

    for (int widgetId : appWidgetIds) {
        updateCurrentInstance(widgetId, widget);
    }
}

事实上,搭载Android 4.4.2的三星Galaxy Note 2(GT-N7100)一切都还可以,但是在搭载Android 5.0的三星Galaxy Note 3(SM-N900)上我有“幻影”appwidget,而不是主屏幕上的真正的appawidget,但是当你在屏幕上看不到appwidget但是你的app appwidget里面存在ID和定期更新的“幽灵”时。 我已经在genymotion模拟器(Android 4.3和5.0)上测试了我的应用程序,但一切都很好。

请建议我如何解决这个奇怪的错误。

1 个答案:

答案 0 :(得分:0)

处理"幻像"小部件它是一场噩梦。您可以使用updateAppWidget (ComponentName provider, RemoteViews views)更新所有实例吗? 根据文档,此方法将设置RemoteViews用于所提供的AppWidget提供程序的所有AppWidget实例。

AppWidgetManager manager = AppWidgetManager.getInstance(context);
ComponentName component = new ComponentName(context, MyAppWidgetProvider.class);
manager.updateAppWidget(component, remoteViews);