2

我有一个运行以下代码的活动(定义了时间和间隔):

Intent buzzIntent = new Intent(getBaseContext(), BuzzReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, buzzIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
buzzIntent.putExtra("interval", interval);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, interval * 60 * 1000, pendingIntent);

和具有以下 onReceive 的 BroadcastReceiver:

@Override
public void onReceive(Context context, Intent intent) {
    try {
        int interval = intent.getIntExtra("interval", -1);
        <... more code ...>
    } catch (Exception e) {
        e.printStackTrace();
    }
}

但是intent.getIntExtra() 返回-1(这不是Activity 中interval 的值,我检查过),所以由于某种原因,BroadcastReceiver 没有获得我存储到Activity 中意图的额外内容。

我尝试了很多不同的东西,但似乎没有任何效果。我在这里错过了什么吗?

4

3 回答 3

18

FILL_IN_DATA在创建待处理意图时设置标志,如下所示:

PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, buzzIntent, Intent.FILL_IN_DATA);

在此更改之后,您应该在广播接收器中收到额外内容。

于 2011-10-15T15:18:43.500 回答
1

你有没有试过在传递给buzzIntent.putExtra() 之前打电话?buzzIntentPendingIntent.getBroadcast()

于 2011-08-10T01:07:21.437 回答
0

试试下面的代码

Bundle bundle = intent.getExtras();
int interval= bundle.getInt("interval", -1);

代替

int interval = intent.getIntExtra("interval", -1);
于 2011-03-07T05:34:19.097 回答