2014-02-21 1 views
0

Я должен что-то упустить, я сделал тестовый Application Project для себя, и это отлично работает, но когда я попытался реализовать свой AlarmManager в своем основном фрагменте проекта, он просто выиграл ' т работы. Вот мой код:AlarmManager не работает во Фрагменте или в Main.java

Метод, который находится в моем фрагменте:

public void schedule() 
{ 
    Long time = new GregorianCalendar().getTimeInMillis()+10*1000; 
    Intent intent = new Intent(getActivity(), AlarmReceiver.class); 

    AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); 

    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, 10*1000, PendingIntent.getBroadcast(getActivity(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)); 


} 

и вот мой AlarmReceiver.class

public class AlarmReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) 
{ 

    Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show(); 

} 
} 

И здесь также являются препараты в моем файле манифеста:

<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 

    <application 
    ... > 
<receiver android:name=".AlarmReceiver"/> 

Что я делаю неправильно?

Примечание: Кажется, что она даже не достигают AlarmReceiver

ответ

2

Ваш код, кажется, работает. Но это проблема - манифест.

<receiver android:name=".AlarmReceiver"/> 

должен быть с полным именем пакета, например

<receiver android:name="com.example.AlarmReceiver"/> 

Я дважды проверить его с моим приложением. так что вам хорошо идти.

+0

спасибо! он уже решен, хотя, я собираюсь подняться –

+0

Спасибо за upvote. как вы решили это? Точно так же я предложил? У меня есть несогласие с моим приятелем ... – alexk

+0

да точно! Я должен был добавить «com.example ...», так как фрагмент, который я пытаюсь использовать, и AlarmReceiver не был в одном пакете –

2

Вы неправильно используете приемник. Что нужно сделать в первую очередь, чтобы добавить действие в манифесте приемника

<receiver android:name=".AlarmReceiver"> 
<intent-filter> 
      <action android:name="com.example.action.ALARM" /> 
</intent-filter> 

Затем построить намерение с этим действием:

public void schedule() { 
Long time = new GregorianCalendar().getTimeInMillis()+10*1000; 
Intent intent = new Intent("com.example.action.ALARM"); 

... 

} 

и в ресивере:

public void onReceive(Context context, Intent intent) { 
if (intent.getAction().equals("com.example.action.ALARM") 
    Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show(); 
} 

Это должно сделать трюк.

+0

спасибо, он решен, хотя, будет upvote –

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