2013-01-18 1 views
1

Другой жалуется на AlarmManager (надеясь на быстрое решение). Я использую Android Эмулятор для разработки. Я нашел предположительно рабочий пример, поэтому я попытался его использовать. я сделал следующее: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

Корень зла может быть android:process=":remote" в вашем теге <receiver>. Попробуйте удалить его.

+0

Я удалил, ничего не изменилось. Спасибо за форматирование кода. – Nestor