如何使用PendingIntent在BroadCastReceiver类上发送附加内容?

时间:2013-11-08 10:32:02

标签: android android-intent android-pendingintent

我需要你的帮助!当我在我的Intent中添加额外内容然后我使用该Intent创建一个Pending Intent它不起作用!我没有进入BroadCastReceiver课程。

public class Recordatori_Visita extends Activity {
    public void setAlarm(Calendar targetCal) {

        Intent intent = new Intent (Recordatori_Visita.this, Receiver.class);
        Long targetCal2 = targetCal.getTimeInMillis();  
        intent.putExtra("targetCal",targetCal2);
        intent.putExtra("n",n);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(Recordatori_Visita.this, 1, intent, intent.FILL_IN_DATA);

        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),pendingIntent);
    }
}

public class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context k1, Intent k2) {
    // TODO Auto-generated method stub 

        Bundle bolsaR = k2.getExtras();
        Long extras = bolsaR.getLong("targetCalKey");
        int n= bolsaR.getInt("n");

        NotificationManager notificationManager = (NotificationManager) k1.getSystemService(Context.NOTIFICATION_SERVICE);
        ...
        notificationManager.notify(1,myNotification);

   }
}

我已经删除了代码,所有使用的变量都已创建,我无法找到解决方案。如果我没有在意图中添加额外的数据它可以正常工作但是当我把它放入时它没有工作因为没有通知。谢谢!

1 个答案:

答案 0 :(得分:0)

尝试将系统时间作为requestCode函数中的getBroadcast()

int requestID = (int) System.currentTimeMillis();
PendingIntent pendingIntent = PendingIntent.getBroadcast(Recordatori_Visita.this, requestID, intent, intent.FILL_IN_DATA);