我已经为此烦恼了几天,所以希望有人指出我做错了什么。我正在创建一个包含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值,因此区别超出了我的理解:(

调试器屏幕截图:
创建意图后-
android - Intent在IntentService中仅缺少一些额外功能-LMLPHP

在意图服务类中读取意图时-
android - Intent在IntentService中仅缺少一些额外功能-LMLPHP

我还尝试按照SO上某些答案中的建议进行操作,但导致警报根本不会触发。
任何帮助是极大的赞赏。

最佳答案

您已将“附加”添加到广播Intent中,然后声称在Service中仅显示5个中的3个。如何查看从Intent中的广播onReceive()中提取“附加”并将其复制到用于调用IntentstartService()中的代码。我想您会发现问题就在这里:-)

10-05 21:16