Android: -Alarm Manager non funziona
-
29-10-2019 - |
Domanda
Nel mio codice allarme manetrico non funziona. La mia applicazione funziona bene. Per favore, consulta il mio codice.
Intent myIntent = new Intent(getApplicationContext(), AndroidAlarmService.class);
myIntent.putExtra("class", "home");
PendingIntent pendingIntent = PendingIntent.getService(this, 0,myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),6000,pendingIntent);
e la mia classe Android AlarmService:-
public class AndroidAlarmService extends BroadcastReceiver implements URLs{
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("BroadCast\n");
String name=intent.getStringExtra("class");
if(name.equals("home")){
Intent homeIn=new Intent(context,Home.class);
context.startActivity(homeIn);
}
}
}
In manifest l'ho fatto;
<receiver android:name=".AndroidAlarmService" android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
</intent-filter>
</receiver>
Perché non funziona ??
Soluzione
Ho ricevuto la risposta. Ho apportato le seguenti modifiche:
Intent myIntent = new Intent(getApplicationContext(), AndroidAlarmService.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,myIntent, 0);
Nella mia classe Androidalarmservice:
Intent homeIn=new Intent(context,Home.class);
homeIn.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(homeIn);
Altri suggerimenti
Ho avuto lo stesso problema fino a quando non ho scoperto di aver messo il mio ricevitore di trasmissione su un pacchetto diverso, non sul generale.
Semplicemente cambiato:
<receiver android:name=".AndroidAlarmService" android:enabled="true" >
per:
<receiver android:name="com.MyCompany.MyPackage.AndroidAlarmService" android:enabled="true" >
Hai provato a cambiare il
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),6000,pendingIntent);
Hai provato a cambiare il 6000 in qualcos'altro? Sembra che tu abbia tutto il resto corretto.
MODIFICARE:
Assicurati di avere l'autorizzazione Read_phone_State nel tuo manifest.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow