更新: eclipse和代码都没有造成这些麻烦。 Genymotion 做了。
也许我的方法是完全错误的,因为没有其他人似乎有这个问题 - 如果是这样的话,我愿意尝试不同的方式而不是解决这个问题: 我有以下设置。
BroadcastReceiver正在侦听应用程序的安装。每当安装新的应用程序时,我使用PendingIntent创建一个通知,该PendingIntent基于正常的Intent通过
PendingIntent pIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
在创建PendingIntent之前,我在正常的Intent中添加了一些额外的东西,当点击通知时,它会被传递给被触发的Activity。
notificationIntent.putExtra("AppLabel", appLabel); // the installed App
notificationIntent.putStringArrayListExtra("Group", group); // the corresponding group
notificationIntent.putStringArrayListExtra("List", list); // the corresponding list
现在这样可以正常工作并显示通知。调试我可以看到,当创建pIntent时,所有额外的设置都被正确设置并传递。 但是,当我尝试在打开的Activity中读取额外内容时,启动麻烦。我已经不得不根据这里的答案构建一个解决方法来阅读附加内容:
Bundle bundle = getIntent().getExtras();
for (String key : bundle.keySet()) {
Object value = bundle.get(key);
if (key.equals("Group")) {
group = (ArrayList<String>) value;
} ... }
这也有一段时间了,但现在我完全迷失了。由于某些原因,ArrayList附加内容为空[] - appLabel仍然设置正确。
现在真正的麻烦是,我不确定这是否与代码相关,或者是日食问题。
我观察到,在一些部署之后,bundle.keySet()返回了我在putExtra调用中设置的不同键。我搜索时经常遇到OutOfSync错误。对于键的名称,刷新确实有时会有所帮助,但值仍会丢失。
对于读过此内容的人:非常感谢!现在 - 有人知道,这里发生了什么?有谁知道类似的日食问题?或者代码中是否有错误? 任何有关不同设计的建议也是受欢迎的。如果我可以排除一些错误来源,我会很高兴... 提前致谢
更新:Manifest Infos:已启动的通知活动定义如下:
<activity
android:theme="@style/Theme.AppCompat.CompactMenu.Dialog"
android:label="Notification Receiver"
android:excludeFromRecents="true">
</activity>
然而,MainActivity只有一个名称和标签。除了:
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="19" />
我刚刚在两点添加了一个SystemOut:一个是由BCR创建的,一个是活动读取的。
BroadcastReceiver.getExtras.keyset returns [a,b,c,d]
Activity.getExtras.keyset returns the keys [x,y,z]
在所有项目和所有工作区中搜索,x,y,z无处可寻......它们在几天前的某个版本中使用过,所以看来eclipse存储了一些无效的旧数据?
答案 0 :(得分:0)
至少对于当前的实现,这看起来像解决问题 - 除了同步问题,当然但没有再发生。