意图只缺少IntentService

时间:2016-06-13 06:23:56

标签: android android-intent alarmmanager android-pendingintent intentservice

我已经用这个打破了几天,所以我希望有人可以指出我做错了什么。我正在使用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个不可用。它们都是字符串值,因此歧视超出了我的理解:(

调试器截图: 创建意图时 - enter image description here

在意图服务类中读取意图时 - enter image description here

我也按照SO上的一些答案中的建议尝试intent.setAction("",Math.random());,但这导致警报根本没有触发。 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您已将“额外内容”添加到广播Intent,然后您声称在Service中只有3个出现在广播中。如何查看从Intent中的广播onReceive()中提取“额外内容”的代码,并将其复制到您用来调用Intent的{​​{1}}。我想你会发现你的问题就在那里: - )