2013-05-20 3 views
1

Android가 처음인데 이에 대한 도움을 주시면 감사하겠습니다.AlarmManager를 사용하여 향후 특정 작업 수행

나중에 DatePickerTimePicker 위젯으로 설정할 때 특정 시간에 내 BroadcastReceiver 클래스를 호출하도록 Alarm Manager를 사용하려고합니다.

그러나 해당 기능을 수행하려면 broadcastreceiver 클래스를 가져올 수 없습니다. 아래

내가 OS에서 브로드 캐스트 메시지를 수신하기 위해 브로드 캐스트 리시버 클래스의 매니페스트 파일에 넣어 코드입니다 :

<receiver android:name="androidapp.scheduler.MyBroadcastReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.MYBROADCASTRECEIVER" > 
      </action> 
     </intent-filter> 
    </receiver> 

을 그리고 아래 난 그래서 내 다음 버튼의 OnClickListener를 넣어 한 코드는 운영 체제에 통화 시간을 알립니다.

  TimePicker myTp = (TimePicker)findViewById(R.id.tpTime); 
      cal.set(Calendar.YEAR,myDatePicker.getYear()); 
      cal.set(Calendar.MONTH, myDatePicker.getMonth()); 
      cal.set(Calendar.DAY_OF_MONTH, myDatePicker.getDayOfMonth()); 
      cal.set(Calendar.HOUR, myTp.getCurrentHour()); 
      cal.set(Calendar.MINUTE, myTp.getCurrentMinute()); 
      cal.set(Calendar.SECOND, 0); 

      Log.i("SCheduling", cal.getTime().toString()); 

      Intent intent = new Intent(Scheduling.this, MyBroadcastReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(Scheduling.this, 234324243, intent, 0); 
      AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
      alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 

      Intent nextForm = new Intent(this,Sender.class); 
      nextForm.putExtra("contacts", contacts); 
      startActivity(nextForm);  
      Log.i("SCheduling", "everything set"); 

마지막으로, MybroadcastReceivers 클래스 코드는 다음과 같습니다 : 나는 여기에 무엇을 놓치고

public class MyBroadcastReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i("brreceiver", "BroadcastReciever"); 
     Toast.makeText(context, "schedule set!.", 
       Toast.LENGTH_LONG).show(); 
    } 
} 

? 다음 문 변화에

+0

나는 토스트가 컨텍스트로받는 것이 무엇인지 궁금합니다. 올바른 문맥입니까? 그 이유는 내가 날짜를 설정 한 후, 내 프로그램이 sender.class 인 다음 활동을로드한다는 것입니다. 그러나 토스트가 나타나지 않습니다? – user2031865

+0

은 수신 된 브로드 캐스트입니다. OnReceive가 호출되는지 확인하려면 로그를 확인 했습니까? – prvn

+0

예. 로그를 확인했지만 아무 것도 없었습니다. – user2031865

답변

0

문제가 에뮬레이터로했다, 그것은 코드가 정확했다 것 같다()

PendingIntent pendingIntent = PendingIntent.getBroadcast(Scheduling.this, 234324243, intent, 0); 
+0

도 작동하지 않았습니다. – user2031865

0

this.getApplicationContext에 Scheduling.this. 나는 여전히 에뮬레이터에 무엇이 잘못되었는지 알지 못하지만 코드를 다시 테스트하여 작동하고 로그 결과를 받았습니다.

관련 문제