我已经为此烦恼了几天,所以希望有人指出我做错了什么。我正在创建一个包含5个额外字符串的intent,并将其设置为与AlarmManager一起使用的PendingIntent。但是,当触发警报并继续处理服务类的onHandleIntent中的intent时,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个则不可用。它们都是String值,因此区别超出了我的理解:(
调试器屏幕截图:
创建意图后-
在意图服务类中读取意图时-
我还尝试按照SO上某些答案中的建议进行操作,但导致警报根本不会触发。
任何帮助是极大的赞赏。
最佳答案
您已将“附加”添加到广播Intent
中,然后声称在Service
中仅显示5个中的3个。如何查看从Intent
中的广播onReceive()
中提取“附加”并将其复制到用于调用Intent
的startService()
中的代码。我想您会发现问题就在这里:-)