首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppWidgetProvider,如何确定特定小部件的AppWidgetProvider

AppWidgetProvider,如何确定特定小部件的AppWidgetProvider
EN

Stack Overflow用户
提问于 2012-11-24 19:37:11
回答 1查看 633关注 0票数 0

我需要一种方法来确定哪个AppWidgetProvider对于configure活动中的当前小部件是活动的。我目前的解决方案导致在某些设备上出现NullException,appWidgetInfo.provider不知何故为空。

有没有更好的方法来确定哪个AppWidgetProvider对应于特定的appWidgetId。

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2012-12-20 01:14:00

我实际上也遇到了同样的问题,因为我还需要确定实际的AppWidgetProvider类。你的问题确实对我有帮助,我或许也能帮到你。只需实现这样的方法,您就不必为每个AppProvider类编写代码:

代码语言:javascript
复制
    private static Class<?> getAppWidgetProviderClass(Context context, int appWidgetId){
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
    AppWidgetProviderInfo appWidgetInfo = appWidgetManager.getAppWidgetInfo(appWidgetId);
    String appWidgetProviderName = appWidgetInfo.provider.getClassName();
    Class<?> myProvider = null;
    try {
        myProvider = Class.forName(appWidgetProviderName);
    } catch (ClassNotFoundException cnf){
        Log.e("myProviderClass","Class:" + appWidgetProviderName + " not found!");
    }
    return myProvider;
}

在将其用于类定义意图之后:

代码语言:javascript
复制
Intent myIntent = new Intent(context, getAppWidgetProviderClass(context, appWidgetId));

希望能对你有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13540819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档