Java Android-多个应用程序部件播放不同的声音
我正在编写一个android音板,它允许用户创建多个桌面小部件,每个声音一个。我使用一个活动让用户选择他想要为哪个声音创建小部件。对于创建的每个小部件,我以Java Android-多个应用程序部件播放不同的声音,java,android,android-widget,Java,Android,Android Widget,我正在编写一个android音板,它允许用户创建多个桌面小部件,每个声音一个。我使用一个活动让用户选择他想要为哪个声音创建小部件。对于创建的每个小部件,我以 key => "WIDGET_FILENAME_"+widgetId, value=> fileName 为了播放这些声音,我确实覆盖了widgetProvider类上的onReceive方法。单击桌面小部件时,它会触发对此方法的广播,该方法从intent中获取小部件id,然后加载与小部件关联的共享首选项:
key => "WIDGET_FILENAME_"+widgetId, value=> fileName
为了播放这些声音,我确实覆盖了widgetProvider类上的onReceive
方法。单击桌面小部件时,它会触发对此方法的广播,该方法从intent中获取小部件id,然后加载与小部件关联的共享首选项:
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
问题是:无论单击哪个小部件,widgetId总是相同的,导致播放相同的声音
对此有什么想法或指导吗?我遇到了同样的问题,并这样解决了它:
Intent intent = new Intent(context, YourActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pi = PendingIntent.getActivity(context, appWidgetId, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
int currentWidgetId = this.getIntent().getIntExtra(
AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
private void updateWidgetView() {
views = new RemoteViews(YourWidget.class.getPackage().getName(),
R.layout.main_widget);
mgr = AppWidgetManager.getInstance(this);
views.setTextViewText(R.id.some_text_view, someText);
// Tell the AppWidgetManager to perform an update on the current App Widget
mgr.updateAppWidget(currentWidgetId, views);
}
我现在遇到了这个问题,使用该代码,问题就消失了,想想Intent中的widgetAppId和Create new标志将使这个Intent始终是唯一的。太棒了!真的帮我解决了同样的问题。有趣的是,区别在于使用appWidgetId作为请求代码,而在文档中它说这从来没有被使用过…@Rabi,你有更完整的代码可以共享吗?我一直试图在我的代码中实现这一点,但它就是不起作用。