我正在开发一个小部件,该小部件将在用户点击它时更改它显示的数据。这通常很容易处理,但我的应用小部件提供程序正在处理具有不同数据集的多个小部件实例。话虽如此,当用户点击小部件时,会启动一个调用 changeData() 方法的 PendingIntent。在启动的意图内部是我存储小部件 ID 的地方,因此 changeData() 知道要使用哪个数据集。起初我将小部件 ID 存储在意图的附加内容中,但我发现 Android 小部件如何处理小部件意图附加内容存在一个错误,所以现在我尝试通过使用 setData() 方法传递 URL 来存储小部件(格式化如 content:widgetId IE content:24 等)。
这就是我为 PendingIntent 设置数据的方式:
Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA");
changeData.setData(Uri.parse("content:" + currentWidgetId));
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0);
但是,一旦我尝试对此进行测试,通常在点击小部件时调用的 onRecieve() 方法就不再被调用。我需要在我的 Android 清单文件中设置什么才能正常工作,还是我做错了什么?
感谢您花时间阅读本文,托尼