0

setRepeating() von Alarmmanager wiederholt nicht nach dem Update apk VersionsetRepeating() von Alarmmanager wiederholt nicht nach dem Update apk Version

Gibt es eine Möglichkeit, es automatisch ausgeführt wird, direkt nach dem Update apk?
Die Zeit ist bereits im vorherigen Versionscode eingestellt, aber die Alarme funktionieren nur, wenn das Telefon neu gestartet wird.

//SET ALARM 
Cal.setTimeInMillis(System.currentTimeMillis()); 
Cal.set(Calendar.HOUR_OF_DAY, hour); 
Cal.set(Calendar.MINUTE, minute); 
Cal.set(Calendar.SECOND, 0); 

Editor e = sharedPrefs.edit(); 
e.putLong("userTime", Cal.getTimeInMillis()); 
e.commit(); 
mytime.setSummary(DateFormat.getTimeFormat(getBaseContext()) 
     .format(new Date(Cal.getTimeInMillis()))); 

new AlarmTask(UserSettingActivity.this, Cal).run(); 

Klasse AlarmTask implementiert Runnable:

private final Calendar date; 
private final AlarmManager am; 
private final Context context; 

public AlarmTask(Context context, Calendar date) { 
    this.context = context; 
    this.am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    this.date = date; 
} 

@Override 
public void run() { 

    Intent intent = new Intent(context, NotifyService.class); 
    intent.putExtra(NotifyService.INTENT_NOTIFY, true); 
    PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); 

    am.setRepeating(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 
} 

Vielen Dank

+0

können Sie eine Sendung mit benutzerdefinierten Logik verwenden Alarm auslösen! – notTdar

Antwort

0

gerade gelöst, Service nach dem Versions-Update neu gestartet werden muss. hinzufügen manifestieren:

<receiver android:name=".Launcher" > 
    <intent-filter> 
     <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> 
    </intent-filter> 
</receiver> 

Launcher Klasse

public class Launcher extends BroadcastReceiver { 

    public void onReceive(Context context, Intent intent) { 

     context.stopService(new Intent(context.getApplicationContext(), NotifyService.class)); 
     context.startService(new Intent(context.getApplicationContext(), NotifyService.class)); 

    } 
} 
Verwandte Themen