我正在编写一个android soundboard,允许用户创建多个桌面小部件,每个声音一个。我正在使用一个活动,让用户选择他想要为哪个声音创建小部件。对于创建的每个小部件,我以以下形式存储一个共享首选项
key => "WIDGET_FILENAME_"+widgetId, value=> fileName
为了播放声音,我覆盖了widgetProvider类上的onRecieve
方法。当单击桌面小部件时,它会触发对此方法的广播,该方法从意图中获取小部件id,然后加载与小部件关联的共享首选项:
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
问题是:无论单击哪个小部件,widgetId总是相同的,导致播放相同的声音。
对此有什么想法或指导吗?
发布于 2011-01-22 05:09:09
我也有同样的问题,并像这样解决了它:
Intent =新的Intent(context,YourActivity.class) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId);
context pi = PendingIntent.getActivity(context,appWidgetId,intent,在获得要更新的appWidgetId后,更新Activity类:
AppWidgetManager.INVALID_APPWIDGET_ID);
RemoteViews(YourWidget.class.getPackage().getName(),void updateWidgetView() { views =新的视图);mgr =AppWidgetManager.getInstance( R.layout.main_widget);views.setTextViewText(R.id.some_text_view,someText);//告诉AppWidgetManager更新当前的应用小部件视图(currentWidgetId,mgr.updateAppWidget);}
发布于 2011-08-06 05:03:31
我现在有这个问题,有了这个代码问题就解决了,我认为意图中的widgetAppId和创建新的标志将使这个意图始终是唯一的。
https://stackoverflow.com/questions/4225197
复制相似问题