1

싶습니다. 에서 인 텐트의 일부 인수를 BroadcastReceiver 클래스의 onReceive() 메소드에서 가져옵니다. 하지만 int ALARM_COUNT = 1인데, 필자는 Parcelable Alarm 객체와 test int (알람 객체에 문제가있는 경우)라는 두 개의 arg를 두었습니다. 내 AlarmBroadcaseReceiver 클래스의BroadcastReceiver의 onReceive에서 인 텐트 엑스트라가 비어 있습니다.

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); 
    } 

그리고 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 
    } 

으로 내가 PendingIntent 변수를 생성하는 방법을

private void setCurrentAlarm(Alarm alarm) { 
     long time = System.currentTimeMillis() + getClosestTimeDifference(alarm); 

     mAlarmManager.set(AlarmManager.RTC_WAKEUP, time, createPendingIntent(alarm)); 
    } 

이 있습니다 :

는이 같은 알람을 설정 인 텐트에는 일부 ALARM_COUNT 개의 추가 항목 만 포함되어 있지만 내 추가 기능은 없습니다.

어떻게해야합니까? 어떻게 얻을 수 있습니까?

+0

안녕 데니스, 난이 링크 https://stackoverflow.com/a/42181785/7542998 추천 onReceive 당신이 당신의 방법 "TEST"의 값을 갖게됩니다, 그것은 모든 정보가 alarmManager를 사용하는 방법을 이해해야합니다. – Diekrul

답변

0

안녕하세요 Denis 당신은 String과 같은 값을 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) 
} 

그리고

관련 문제