我有一个应用程序,它使用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?
谢谢!
伊娃
我有一项活动,让用户选择一个电话号码.当然,我希望我的班级能够记住所选联系人的ID,所以我将其保存在课程领域.但是当onActivityResult方法返回时,我的类变量被重置.这是我正在尝试做的事情:
Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
...
public void onActivityResult(int reqCode, int resultCode, Intent intent){
super.onActivityResult(reqCode, resultCode, intent);
switch(reqCode){
case(PICK_CONTACT):
if(resultCode == Activity.RESULT_OK){
Uri contactData = intent.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if(c.moveToFirst()){
contactName = c.getString(c.getColumnIndexOrThrow(People.NAME));
contactId = c.getInt(c.getColumnIndexOrThrow(People._ID));
break;
Run Code Online (Sandbox Code Playgroud)
当我在此方法中设置断点时,contactName和contactId的值正如我所期望的那样,但是一旦该方法返回,值就会以某种方式重置为其默认值.很明显我错过了一些东西,但我不确定我做错了什么或遗忘了.
谢谢!
伊娃
android ×2