Intent 仅缺少 IntentService 中的一些额外功能
Intent missing only some extras in IntentService
这几天我一直在为这个问题烦恼,所以我希望有人能指出我做错了什么。我正在创建一个带有 5 个额外字符串的意图,并将其设置为 PendingIntent 以与 AlarmManager 一起使用。但是,当警报触发并且我继续处理服务 class 的 onHandleIntent 内的意图时,意图中只有 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始终为空。我不明白为什么只有 3 个附加功能可用而其他 2 个不可用。它们都是字符串值,所以歧视超出了我的理解:(
调试器截图:
创建意图时 -
在意向服务中读取意向时class -
我也尝试按照 SO 的一些答案中的建议进行 intent.setAction("",Math.random());
,但这导致警报根本没有触发。
非常感谢任何帮助。
您已将您的 "extras" 添加到广播 Intent
,然后您声称在您的 Service
中只有 5 个中的 3 个出现。查看从 onReceive()
中的广播 Intent
中提取 "extras" 并将它们复制到您用来调用 startService()
的 Intent
的代码怎么样?我想你会发现你的问题就在那里:-)
这几天我一直在为这个问题烦恼,所以我希望有人能指出我做错了什么。我正在创建一个带有 5 个额外字符串的意图,并将其设置为 PendingIntent 以与 AlarmManager 一起使用。但是,当警报触发并且我继续处理服务 class 的 onHandleIntent 内的意图时,意图中只有 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始终为空。我不明白为什么只有 3 个附加功能可用而其他 2 个不可用。它们都是字符串值,所以歧视超出了我的理解:(
调试器截图:
创建意图时 -
在意向服务中读取意向时class -
我也尝试按照 SO 的一些答案中的建议进行 intent.setAction("",Math.random());
,但这导致警报根本没有触发。
非常感谢任何帮助。
您已将您的 "extras" 添加到广播 Intent
,然后您声称在您的 Service
中只有 5 个中的 3 个出现。查看从 onReceive()
中的广播 Intent
中提取 "extras" 并将它们复制到您用来调用 startService()
的 Intent
的代码怎么样?我想你会发现你的问题就在那里:-)