[英]Intent extras are empty in onReceive of BroadcastReceiver
我想從BroadcastReceiver 類的onReceive()方法中的Intent 獲取一些參數。 但是只有 int ALARM_COUNT = 1,雖然我放了兩個參數:我的 Parcelable Alarm 對象和 test int(對於警報對象有問題的情況)。
我這樣設置鬧鍾:
private void setCurrentAlarm(Alarm alarm) {
long time = System.currentTimeMillis() + getClosestTimeDifference(alarm);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, time, createPendingIntent(alarm));
}
我是如何創建 PendingIntent 變量的:
private PendingIntent createPendingIntent(@NonNull Alarm alarm) {
Intent intent = new Intent(mContext, AlarmBroadcastReceiver.class);
intent.putExtra(KEY_ALARM, alarm);
intent.putExtra("TEST", 1010120012);
return PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
我的 AlarmBroadcaseReceiver 類中的 onReceive() 方法:
@Override
public void onReceive(Context context, Intent intent) {
Alarm receivedAlarm = intent.getParcelableExtra(KEY_ALARM); //is always null
int receivedInt = intent.getIntExtra("TEST", -1); //the same empty, -1
}
如您所見,Intent 僅包含一些額外的 ALARM_COUNT,但沒有我的額外內容。
怎么辦? 我怎樣才能得到它們?
嗨,丹尼斯,您可以像字符串一樣發送值,然后解析為 int。
private PendingIntent createPendingIntent(@NonNull Alarm alarm) {
Intent intent = new Intent(mContext, AlarmBroadcastReceiver.class);
intent.putExtra(KEY_ALARM, alarm);
intent.putExtra("TEST", "1010120012");
return PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
@Override
public void onReceive(Context context, Intent intent) {
Alarm receivedAlarm = intent.getParcelableExtra(KEY_ALARM); //is always null
Bundle extras = intent.getExtras();
String testString = (String) extras.get("TEST");
int test = Integer.parseInt(testString)
}
你將在你的方法 onReceive 中擁有“TEST”的價值
使用下面示例中所示的標志對我很有幫助。
retrun PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_CANCEL_CURRENT)
retrun PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_IMMUTABLE)
retrun PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_ONE_SHOT)
retrun PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.