2016-12-09 5 views
0

alarmПодозрительные приведение к AlarmManager для ALARM_SERVICE

Кто-нибудь сталкивались с Somthing, как это?

Вот сценарий: Я хочу создать отдельный класс, откуда я могу остановить и запустить будильник через статические методы. Из классов Activity я хочу вызвать методы из этого класса, которые планирую строить, но дело в том, что даже жестко я планирую передать контекст Activity статическим методам, когда передаю «контекст», к моему объекту AlarmManager, Android Studio передает мне следующую информацию, которая напечатана на экране выше, и я должен признать, что я просто не могу указать сообщение.

Что мне не хватает? Я смотрю на Google, но, похоже, эта ситуация здесь не так распространена.

IMPORTAT: Что касается изображения выше, я пытался использовать только контекст (код ниже), без использования getApplicationContext(), но он не работал хорошо ...

Вот код:

package com.mydomain.myapp; 

import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.os.SystemClock; 



public class AlarmManager { 

    private static AlarmManager alarm; 
    private static PendingIntent pIntent; 


    //start alarm 
    public static void setAlarm(Context context, int alarmId, long alarmTime) { 

     Intent startAlarmIntent; 
     long beginAt = SystemClock.elapsedRealtime() + 60 * 1000; 
     long interval = 300000; // 5 minutes 

     alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     startAlarmIntent = new Intent(context, AlarmBroadcastReceiver.class); 
     pIntent = PendingIntent.getBroadcast(context, alarmId, startAlarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
     alarm.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, beginAt, interval, pIntent); 

    } 

    //stop alarm 
    public static void stopAlarm(Context context, int id) { 

     Intent stopAlarmIntent; 

     alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     stopAlarmIntent = new Intent(context, AlarmBroadcastReceiver.class); 
     pIntent = PendingIntent.getBroadcast(context, id, stopAlarmIntent, 0); 
     alarm.cancel(pIntent); 
     pIntent.cancel(); 

    } 

} 

Может кто-нибудь дать руку с этим, пожалуйста? Tks!

ответ

5

Вы создали класс с именем AlarmManager. Это не то же самое, что у Android AlarmManager, и вы пытаетесь вернуть значение getSystemService() в AlarmManager, а не android.app.AlarmManager.

Простейшим решением является изменение имени вашего класса как нечто другое.

+0

Хорошо наблюдаемый, действительно, CommonsWare. Спасибо огромное! – codermx

 Смежные вопросы

  • Нет связанных вопросов^_^