configure アクティビティで、現在のウィジェットに対してアクティブな AppWidgetProvider を特定する方法が必要です。私の現在の解決策では、一部のデバイスで NullException が発生し、appWidgetInfo.provider が何らかの形で null になります。
どの AppWidgetProvider が特定の appWidgetId に対応しているかを判断するより良い方法はありますか?
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
AppWidgetProviderInfo appWidgetInfo = appWidgetManager.getAppWidgetInfo(widgetId);
Intent intent = new Intent();
intent.putExtra(
AppWidgetManager.EXTRA_APPWIDGET_ID,
widgetId);
intent.setAction(RemoteWidgetViewsFactory.KEY_WIDGET_SETTING_REFRESH);
String appWidgetProviderName = appWidgetInfo.provider.getClassName();
if(appWidgetProviderName.equals(WidgetProvider.class.getName())) {
intent.setClass(context, WidgetProvider.class);
}
else if(appWidgetProviderName.equals(WidgetProviderLarge.class.getName())) {
intent.setClass(context, WidgetProviderLarge.class);
}
sendBroadcast(intent);