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

我有带有配置 Activity 的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的Samsung Galaxy Note 2(GT-N7100)上,一切正常,但是在带有Android 5.0的Samsung Galaxy Note 3(SM-N900)上,我拥有“幻像” appwidget,而不是真正的appawidget主屏幕,但是当您在屏幕上看不到appwidget时却是“幻影”,而在您的应用程序内部,widget存在ID和常规更新。
我已经在genymotion模拟器(Android 4.3和5.0)上测试了我的应用,但一切都还不错。

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

最佳答案

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

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

关于android - AppWidget : instance don't be shown after config activity is finished on some devices,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32966184/

10-10 09:10