我的应用程序无法在Android 7上运行。调用了我的BroadcastReceiver.onReceive方法,但缺少intent.getExtras的内容。我已验证数据已正确加载。这是我的onReceive方法的一个片段,其中intent作为参数传递给onReceive。
Bundle bundle = intent.getExtras();
textMessage = bundle.getString("TEXT_MESSAGE");
ArrayList<MyPhoneNumber> phoneNumbersToText = bundle.getParcelableArrayList("PHONE_NUMBERS");
Run Code Online (Sandbox Code Playgroud)
textMessage和phoneNumbersToText均为null。
这是清单文件中的片段:
<receiver android:process=":remote" android:name="com.friscosoftware.timelytextbase.AlarmReceiver"></receiver>
Run Code Online (Sandbox Code Playgroud)
以下是加载数据的代码段:
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);
Run Code Online (Sandbox Code Playgroud)
相同的代码在Android 6中可以正常工作。
您对Android 7需要进行哪些更改有任何想法吗?
谢谢
这是问题所在.我的程序在Android 6.0中运行完美.将设备更新到android 7.0后.Pendingintent无法将可分配的数据传递给boradcast reveiver.这是代码.
发出警报
public static void setAlarm(@NonNull Context context, @NonNull Todo todo) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra("KEY_TODO", todo);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, todo.remindDate.getTime(), alarmIntent);
}
Run Code Online (Sandbox Code Playgroud)
Todo是一个Parcelable类,而todo是我在通知中需要的实例.
在Broadcastreceiver中,我无法获取可用的数据.
public void onReceive(Context context, Intent intent) {
Todo todo = intent.getParcelableExtra("KEY_TODO");
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么意图只包含一个我从未放入的Integer.Carcelable todo在哪里.此代码在Android 6.0中没有问题,但无法在7.0中运行
android broadcast parcelable android-intent android-pendingintent