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 的代码怎么样?我想你会发现你的问题就在那里:-)