2014-09-27 3 views
3

20 초 후에 브로드 캐스트하고 확장 수신기 ExtendedReceiver을 사용하여 브로드 캐스트를 수신하려고합니다. 내가 처음으로 로그 메시지가PendingIntent 및 AlarmManager

public class ExtendedReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i("Title", "Broadcast received"); 
    } 
} 

: 여기

public void alert() { 
    GregorianCalendar cal = new GregorianCalendar(); 
    cal.add(Calendar.SECOND, 20); 

    Intent i = new Intent(this, ExtendedReceiver.class); 
    int _uid = (int) System.currentTimeMillis(); 
    PendingIntent pi = PendingIntent.getBroadcast(this, _uid, i, PendingIntent.FLAG_ONE_SHOT); 

    AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE); 
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi); 

    Log.i("Title", "Alarm has been set"); 
} 

는 ExtendedReceiver 클래스입니다 : 여기

20 초 후에 울리도록 할 PendingIntent를 알람을 생성하고 설정 내 기능입니다 : Alarm has been set하지만 두 번째 로그 메시지가 표시되지 않습니다. 문제가 어디에 놓여 있는지 확신 할 수 없다. (안드로이드 첫날)

+1

당신이 당신의 Manifest.xml 파일에 ExtendedReceiver을 등록 했 도움이되기를 바랍니다? – joao2fast4u

답변

2

나는 이것이 내가 항상하는 일일 수도있다.

PendingIntent pi = PendingIntent.getBroadcast(this, _uid, i, PendingIntent.FLAG_ONE_SHOT); 

PendingIntent pi = PendingIntent.getBroadcast(this, _uid, new Intent(EXTENDED_RECEIVER_ACTION), PendingIntent.FLAG_ONE_SHOT); 

을 변경하고 중요한

:이처럼 ExtendedReceiver을 등록

... 
registerReceiver(new ExtendedReceiver() , new IntentFilter(EXTENDED_RECEIVER_ACTION)); 

PS : EXTENDED_RECEIVER_ACTION는 문자열이며, 수신기 등록을 취소하는 것을 잊지 말아 .

더 문서

here는 :)