android - 将额外的 Intent 传递给 android 广播接收器

标签 android broadcastreceiver android-intent alarmmanager android-pendingintent

我创建了一个 AlarmReceiver 类,用作警报的广播接收器。问题是我需要从设置警报的类发送一些值到广播接收器类。

设置报警管理器.java

     Intent i = new Intent(mContext, AlarmReceiver.class);
     i.putExtra(KEY_ROWID, (long)taskId); 
     PendingIntent pi = PendingIntent.getBroadcast(mContext,taskId_int,i,PendingIntent.FLAG_ONE_SHOT); 
     mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi);

我需要从 alarmreceiver 类的 Intent 中获取 KEY_ROWID。我怎样才能做到这一点? AlarmReceiver 类如下所示。

public class AlarmReceiver extends BroadcastReceiver {
          public static final String ALARM_ALERT_ACTION ="com.android.alarmclock.ALARM_ALERT";
          public static final String ALARM_INTENT_EXTRA = "intent.extra.alarm";

     @Override
      public void onReceive(Context context, Intent intent) {

             //Here I need the values from intent using bundle or anything...

    }
}

最佳答案

你可以使用:

public class AlarmReceiver extends BroadcastReceiver {
          public static final String ALARM_ALERT_ACTION ="com.android.alarmclock.ALARM_ALERT";
          public static final String ALARM_INTENT_EXTRA = "intent.extra.alarm";

     @Override
      public void onReceive(Context context, Intent intent) {

             String keyid = intent.getStringExtra("KEY_ROWID");
    }
}

关于android - 将额外的 Intent 传递给 android 广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426870/

相关文章:

java - 如何自定义实现 Retrofit2.Call<T>

java - Zebra Android SDK 中的错误 "ACCESS_TAG_MEMORY_OVERRUN_ERROR"是什么意思以及如何修复它?

Android BroadcastReceiver 的 onreceive 中的 PendingIntent 为 null

android - BroadcastReceiver 没有被 AlarmManager 触发

java - 如何修复 "startActivity() in ContextCompat cannot be applied to?"

android - afterTextChanged 追加不起作用

Android:搜索 Intent 不起作用

android - 如何通过Android中的耳机发送音频输出?

java - 按号码调用电话,然后按 # 键

java - 即使数据通过,Android Intent 也是空的