我已经用这个打破了几天,所以我希望有人可以指出我做错了什么。我正在使用5个字符串附加项创建一个intent并将其设置为PendingIntent以与AlarmManager一起使用。但是当警报触发并继续处理我的服务类的onHandleIntent内部的意图时,Intent中只有3个额外的内容。一些代码&截图如下。
意图创造:
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
;
notificationIntent.addCategory("android.intent.category.DEFAULT");
notificationIntent.putExtra("key1", "val5");
notificationIntent.putExtra("key2", "val4");
notificationIntent.putExtra("key3", "val3");
notificationIntent.putExtra("key4", "val4");
notificationIntent.putExtra("key5", "val5");
return notificationIntent;
待定意图创建:
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getActivity(), Integer.parseInt(obj.uniqueId), notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
内部意图服务:
protected void onHandleIntent(Intent intent) {
if(intent != null) {
if (intent.getExtras() != null) {
String val1 = intent.getStringExtra("key1");
String val2 = intent.getStringExtra("key2");
String val3 = intent.getStringExtra("key3");
String val4 = intent.getStringExtra("key4");
String val5 = intent.getStringExtra("key5");
// proceed with other stuff..
}
}
}
基于对我类似问题的其他答案,我也尝试过:
final Intent originalIntent = (Intent)intent.getExtras().get( Intent.EXTRA_INTENT );
final String val1 = originalIntent.getStringExtra("key1");
但originalIntent始终为null。我无法弄清楚为什么只有3个附加功能可用而另外2个不可用。它们都是字符串值,因此歧视超出了我的理解:(
我也按照SO上的一些答案中的建议尝试intent.setAction("",Math.random());
,但这导致警报根本没有触发。
非常感谢任何帮助。
答案 0 :(得分:1)
您已将“额外内容”添加到广播Intent
,然后您声称在Service
中只有3个出现在广播中。如何查看从Intent
中的广播onReceive()
中提取“额外内容”的代码,并将其复制到您用来调用Intent
的{{1}}。我想你会发现你的问题就在那里: - )