我的应用程序无法在
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");
textMessage和phoneNumbersToText都为null.
<receiver android:process=":remote" android:name="com.friscosoftware.timelytextbase.AlarmReceiver"></receiver>
这是加载数据的片段:
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需要进行哪些更改的任何想法?
谢谢
解决方法
1,看起来你和我有同样的问题.我将它记录在你评论过的跟踪器(
https://code.google.com/p/android/issues/detail?id=216581)上.
我的解决方案是使用SharedPreferences来存储我的自定义对象.然后,当alarmmanager触发时,我运行以下命令将对象取出.
tl; dr,我使用GSON将我的自定义POJO作为字符串序列化/反序列化到SharedPrefs中.例如:
String json = getSharedPrefs(context).getString(NotificationUtility.NEXT_REMINDER_KEY,"No reminder found"); try { Gson gson = new Gson(); Reminder reminder = gson.fromJson(json,Reminder.class); if (reminder != null) { return reminder; } } catch (Exception error) { Log.i(TAG,"Error parsing json: " + error.getMessage(),error); return null; } return null;
希望这可以帮助你!