【发布时间】:2016-12-11 01:06:01
【问题描述】:
我的应用无法在 Android 7 上运行。我的 BroadcastReceiver.onReceive 方法被调用,但 intent.getExtras 的内容丢失。我已验证数据已正确加载。这是我的 onReceive 方法中的一个 sn-p,其中意图作为参数传递给 onReceive。
Bundle bundle = intent.getExtras();
textMessage = bundle.getString("TEXT_MESSAGE");
ArrayList<MyPhoneNumber> phoneNumbersToText = bundle.getParcelableArrayList("PHONE_NUMBERS");
textMessage 和 phoneNumbersToText 均为 null。
这是我的清单文件中的一个 sn-p:
<receiver android:process=":remote" android:name="com.friscosoftware.timelytextbase.AlarmReceiver"></receiver>
这是加载数据的sn-p:
Intent intent = new Intent(context , AlarmReceiver.class);
intent.putExtra(Constants.TEXT_MESSAGE, scheduledItem.getMessageToSend());
intent.putExtra(Constants.PHONE_NUMBERS, scheduledItem.getPhoneNumbersToText());
PendingIntent sender = PendingIntent.getBroadcast(context, getRequestCodeFromKey(key), intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Get the AlarmManager service
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, selectedDateTime.getTimeInMillis(), sender);
相同的代码在 Android 6 中运行良好。
您对 Android 7 需要进行哪些更改有任何想法吗?
谢谢
【问题讨论】:
-
Intent 有 setAction(String action) 方法。您可以在此处粘贴可序列化对象。有用。 Set extras 在 Android 7 中不起作用。我遇到了同样的问题。这是示例 - stackoverflow.com/a/54718479/4516797
标签: broadcastreceiver android-7.0-nougat