2013-01-18 4 views
1

또 다른 하나는 AlarmManager에 대해 불평하고 있습니다 (빠른 해결책을 원합니다). 개발을 위해 안드로이드 에뮬레이터을 사용하고 있습니다. 작동하는 것으로 추정되는 사례를 발견하여 사용하려고했습니다. 다음을 수행했습니다.Android AlarmManager가 에뮬레이터에서 작동하지 않습니다.

  1. 수신자 문자열을 매니페스트 파일에 추가했습니다.

    <receiver android:name=".SchHandler" android:process=":remote" /> 
    
  2. 주요 활동을 만들고 onCreate를 사용했습니다.

    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        Bundle bundle = new Bundle(); 
        SchHandler handler = new SchHandler(this, bundle, 1); 
    } 
    
  3. 경보를 생성하고 수신 대기하는 BroadcastReceiver를 만들었습니다.

    public class SchHandler extends BroadcastReceiver { 
        private final String REMINDER_BUNDLE = "ReminderBundle"; 
    
        public SchHandler (Context context, Bundle extras, int timeoutInSeconds) {  
         Toast.makeText(context, "Scheduling...", Toast.LENGTH_LONG).show(); 
         Log.d("Debug", "Sch"); 
    
         AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
         Intent intent = new Intent(context, SchHandler.class); 
         PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
    
         Toast.makeText(context, "Time:" + System.currentTimeMillis(), Toast.LENGTH_LONG).show(); 
         alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, 
         System.currentTimeMillis() + 2000, 5000, pendingIntent);  
        } 
    
        @Override 
        public void onReceive(Context context, Intent arg1) { 
         // TODO Auto-generated method stub 
         Log.e(REMINDER_BUNDLE, "Receive"); 
         Toast.makeText(context, "Testing", Toast.LENGTH_LONG).show(); 
        } 
    } 
    

내가 와 그것을 시도가, setRepeating 설정, 아무 일 없습니다. 그 밖의 무엇을 시도해야합니까?

+0

그건 이상합니다. 귀하의 코드에 어떤 문제도 보이지 않습니다. onReceive()가 실행되었지만 축배가 표시되지 않았습니까? –

+0

실행되면 로그에 표시되어야합니다 (_Log.d_). 그러나 아무 일도 일어나지 않습니다. – Nestor

+0

그러면 'BroadcastReceiver'가 제대로 등록되지 않습니다. ''를''에'AndroidManifest.xml'에 추가하고 그 동작을'Intent'로 설정하십시오. –

답변

0

수신자 이름을 정규화 된 버전으로 수정했으며 클래스 이름 대신 패키지 이름을 사용했습니다. 제대로 설정 한 후 작동하게했습니다.

0

악의 근원은 <receiver> 태그에 android:process=":remote" 일 수 있습니다. 제거해보십시오.

+0

삭제되었지만 변경된 사항이 없습니다. 코드 서식을 보내 주셔서 감사합니다. – Nestor

관련 문제