我有一个应用程序,它使用AlarmManager设置一个警报,当它关闭时启动另一个Activity.AlarmManager采用PendingIntent并在指定时间到来时生成BroadcastReceiver类.我想知道是否有任何方法可以通过进入PendingIntent的Intent对象将参数传递给此BroadcastReceiver?
基本上我想做的是这样的事情:
Intent my_intent = new Intent(this, BroadcastService.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, my_intent, 0);
my_intent.putExtra("arg1", arg1);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (1000), pendingIntent);
Run Code Online (Sandbox Code Playgroud)
我希望能够在BroadcastReceiver的onReceive(Context,Intent)方法中检索arg1.我认为局部变量my_intent将是PendingIntent传递给onReceive的第二个参数,但显然这不太对.是否可以以这种方式在Activity和BroadcastReceiver之间传递参数(使用Intent.putExtra()),还是应该使用ContentProvider?
谢谢!
伊娃
小智 9
我遇到了类似的问题,但是在将它包装到PendingIntent之前我已经先填充了Intent.但是,如上所述,我的问题的答案是我需要使用PendingIntent.FLAG_UPDATE_CURRENT标志.一旦我设置了旗帜,它就有效了!我希望这有助于其他人.-Jeff
小智 5
int code=1;
Intent i2 = new Intent(StartAlarm);
i2.putExtra("_id",code);
class test extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
int i=arg1.getIntExtra("_id",-1);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个应用程序,它使用 AlarmManager 设置警报,当它关闭时启动另一个 Activity。
这是不好的形式。如果没有充分的理由(例如,接到电话),请勿像这样弹出未经通知的活动。如果用户正在做某事,例如发送短信、玩游戏或尝试点击电话菜单中的数字,该怎么办?
是否可以以这种方式在 Activity 和 BroadcastReceiver 之间传递参数(使用 Intent.putExtra())
是的。但是,请记住,您PendingIntent.FLAG_UPDATE_CURRENT在创建 时需要使用PendingIntent, 以确保您在 Intent 上提供的任何新附加功能实际得到使用。
| 归档时间: |
|
| 查看次数: |
7076 次 |
| 最近记录: |