android - 如何使用 PendingIntent 在 BroadCastReceiver 类上发送额外内容?

标签 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);

   }
}

我把代码删了,所有用到的变量都创建了,我找不到解决办法。如果我不在 Intent 中放置额外的数据,它可以正常工作,但是当我 putExtra 时,它不起作用,因为没有通知。谢谢!!

最佳答案

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

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

关于android - 如何使用 PendingIntent 在 BroadCastReceiver 类上发送额外内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19856850/

相关文章:

android - 如何继承ArrayAdapter?

android-intent - Netflix Android TV 应用程序 (com.netflix.ninja) 的电影深度链接

android - 启动器重启后 AppWidget PendingIntent 不工作

android - 单击按钮时隐藏虚拟键盘

android - 无法缩放或翻转 surfaceview 矩阵

android - 当我切换到飞行模式时,如何立即禁用我的完成按钮?

android - 我应该如何以编程方式打开三星设备上的飞行模式设置页面?

android - 将数据从小部件传递到应用程序

android - 在 Flutter 应用程序 Targeting S+(版本 31 及更高版本)中,需要在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

java - 安卓 Lint。是否可以通过命令行扫描 .java 类