Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 正在尝试将数据发送到应用程序小部件_Android_Widget_Android Intent - Fatal编程技术网

Android 正在尝试将数据发送到应用程序小部件

Android 正在尝试将数据发送到应用程序小部件,android,widget,android-intent,Android,Widget,Android Intent,我正在开发一个小部件,当用户点击它时,它会改变显示的数据。这通常很容易处理,但我的应用程序小部件提供商正在处理具有不同数据集的多个小部件实例。话虽如此,当用户点击小部件时,会启动一个PendingEvent,调用changeData()方法。在启动的意图中,我存储小部件ID,以便changeData()知道要使用哪个数据集。起初,我将小部件ID存储在intent的extras中,但我发现Android小部件处理小部件intent extras的方式存在缺陷,因此现在我尝试通过使用setData(

我正在开发一个小部件,当用户点击它时,它会改变显示的数据。这通常很容易处理,但我的应用程序小部件提供商正在处理具有不同数据集的多个小部件实例。话虽如此,当用户点击小部件时,会启动一个PendingEvent,调用changeData()方法。在启动的意图中,我存储小部件ID,以便changeData()知道要使用哪个数据集。起初,我将小部件ID存储在intent的extras中,但我发现Android小部件处理小部件intent extras的方式存在缺陷,因此现在我尝试通过使用setData()方法传递URL(格式如content:widgetId,即content:24等)来存储小部件

以下是我为PendingEvent设置数据的方式:

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清单文件中设置什么才能正常工作,还是我完全做错了什么

感谢您抽出时间阅读此文, 托尼

你需要匹配

<data android:scheme="content" />
在您的意图过滤器中

取决于您是用xml还是java声明筛选器


仅当包含URI但没有数据类型(并且无法从URI推断类型)的意图对象的URI与筛选器中的URI匹配且筛选器同样未指定类型时,该对象才能通过测试。只有像mailto:和tel:这样的URI不引用实际数据时才会出现这种情况。

感谢您的澄清,这是完全有意义的。现在唯一的问题是,当我将数据标签添加到清单中时,小部件从菜单中消失以选择一个小部件。这解决了它!谢谢你,盖布!提醒:如果你遇到了与我相同的问题,小部件没有出现在菜单上,请确保你为数据做了一个单独的意图过滤器。啊,好的。谢谢你更新这个问题。
IntentFilter filter = new IntentFilter("com.tonycosentini.mintdroid.CHANGE_DATA");
filter.addDataScheme("content");