意图不将数据传递给 AlarmManager 的 BroadcastReceiver
Posted
技术标签:
【中文标题】意图不将数据传递给 AlarmManager 的 BroadcastReceiver【英文标题】:Intent not passing data to BroadcastReceiver of AlarmManager 【发布时间】:2021-11-15 10:12:26 【问题描述】:我正在尝试通过 AlarmManager 的 PendingIntent 将数据传递给 BroadcastReceiver
在示例中,我尝试传递一个字符串和一个 Parcelable 对象,但是当我尝试在 BroadcastReceiver 中读取它们时,我得到了 null
活动
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent i = new Intent (this, ReminderBroadcast.class);
i.putExtra("ROUTINE", r);
i.putExtra("MESSAGE", "Example string");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,1234,i,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, pendingIntent);
广播接收器
public class ReminderBroadcast extends BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
Log.i(LOG_TAG,"notification code is "+ getResultCode());
Log.i(LOG_TAG, "message is: "+ intent.getStringExtra("MESSAGE"));
Log.i(LOG_TAG, "routine " + ((Routine)(intent.getParcelableExtra("ROUTINE"))).getRoutineName());
清单
<activity android:name=".SetupNotificationActivity" />
<receiver android:name=".support.ReminderBroadcast"
android:enabled="true" />
这让我发疯,因为在互联网上找到的所有解决方案都建议使用 PendingIntent.FLAG_UPDATE_CURRENT 来解决问题,但这似乎不起作用。
有什么建议吗? 谢谢
【问题讨论】:
您的代码在这里有效。仅用一根弦进行测试。 getResultCode(): 0. 你期待哪个代码? 不期望来自 getResultCode 的任何特定代码。我对我没有从 getExtra 收到任何字符串这一事实感到困扰,但感谢您的回答代码对您有效的事实使谜语变得更加困难:) 【参考方案1】:对于可能遇到相同问题的任何人,我找到了解决方案。
该问题是由项目的 Parcelization 中的问题引起的,但该问题并未产生任何异常。
删除后一切正常
感谢支持
【讨论】:
以上是关于意图不将数据传递给 AlarmManager 的 BroadcastReceiver的主要内容,如果未能解决你的问题,请参考以下文章