小编ivc*_*eto的帖子

通过Android中的Intent将参数传递给BroadcastReceiver

我有一个应用程序,它使用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?

谢谢!

伊娃

android

9
推荐指数
3
解决办法
7076
查看次数

方法返回时,将重置onActivityResult中设置的类变量

我有一项活动,让用户选择一个电话号码.当然,我希望我的班级能够记住所选联系人的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

6
推荐指数
1
解决办法
1200
查看次数

标签 统计

android ×2