我有一个小部件,当用户点击widget主体时,它应该调用主应用程序的Activity.我的设置适用于单个窗口小部件实例,但是对于同一窗口小部件的第二个实例,PendingIntent会被重用,因此我发送的重要信息将被覆盖为第一个实例.所以我认为我应该将小部件ID作为Intent数据传递,但是一旦我添加了Intent #setData,我会在日志中看到2个单独的Intent被适当地触发但是Activity无法提取它所以基本上Activity不会出现没有任何反应(没有错误或警告以太)
以下是在Manifest中设置活动的方式:
这里是为处理点击而设置的代码
Intent di = new Intent("bostone.android.search.RESULTS");
di.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// if line below is commented out - the Activity will start
di.setData(ContentUris.withAppendedId(Uri.EMPTY,widgetId));
di.putExtra("URL",url);
views.setOnClickPendingIntent(R.id.widgetContent,PendingIntent.getActivity(this,di,0));
主应用程序和小部件在其自己的包和Manifest中打包为2个单独的APK
最佳答案
我认为你需要一个< data>您的< intent-filter>中的标记为了使你发射的意图与你注册的意图过滤器相匹配.
https://developer.android.com/guide/topics/manifest/data-element.html
使用Uri.EMPTY也可能是个问题.我创建了你自己的Uri方案,所以你的setData()调用看起来像:
di.setData(Uri.withAppendedpath(Uri.parse("droidln://widget/id/"),String.valueOf(appWidgetId)));
你的意图过滤器看起来像:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。