Pregunta

Tengo una pieza muy simple de código que se utiliza para programar mi siguiente operación de sincronización. Se está ejecutando dentro de la SyncAdapter que se extiende AbstractThreadedSyncAdapter - por lo tanto utiliza su contexto. El PendingIntent se dirigió a la BroadcastReceiver "MyService", que sólo logra la SyncAdapter.

Estoy tratando de programarlo para que se repita en 24 horas.

private void scheduleNextSync(Long timeFromNow) {
    Intent intentSync = new Intent(getContext(), MyService.class);
    intentSync.setAction(Intent.ACTION_SYNC);
    intentSync.addCategory("android.provider.CONTACTS_STRUCTURE");
    intentSync.putExtra(MySyncAdapter.EXTRA_SYNC_TYPE, "");
    intentSync.putExtra(MySyncAdapter.EXTRA_RESOLVE_METAID, false);

    int flags = 0;
    int request = REQUEST_SYNC_ALL;
    PendingIntent piSync = PendingIntent.getBroadcast(getContext(), request, intentSync, flags);
    //
    Log.i(TAG, "schedulePendingSync: " + piSync.toString());
    AlarmManager alarm = (AlarmManager) getContext().getSystemService(Activity.ALARM_SERVICE);
    alarm.set(request, SystemClock.elapsedRealtime() + timeFromNow, piSync);
}

salida del registro:

01-20 22:42:18.864 W/dalvikvm(14447): threadid=8: thread exiting with uncaught exception (group=0x40020950)
01-20 22:42:18.919 E/AndroidRuntime(14447): FATAL EXCEPTION: Thread-9
01-20 22:42:18.919 E/AndroidRuntime(14447): java.lang.NullPointerException
01-20 22:42:18.919 E/AndroidRuntime(14447):     at android.os.Parcel.readException(Parcel.java:1253)
01-20 22:42:18.919 E/AndroidRuntime(14447):     at android.os.Parcel.readException(Parcel.java:1235)
01-20 22:42:18.919 E/AndroidRuntime(14447):     at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:174)
01-20 22:42:18.919 E/AndroidRuntime(14447):     at android.app.AlarmManager.set(AlarmManager.java:139)
01-20 22:42:18.919 E/AndroidRuntime(14447):     at com.mysyncadpter.android.MySyncAdapter.scheduleNextSync(MySyncAdapter.java:145)
01-20 22:42:18.919 E/AndroidRuntime(14447):     at com.mysyncadpter.android.MySyncAdapter.access$2(MySyncAdapter.java:131)
01-20 22:42:18.919 E/AndroidRuntime(14447):     at com.mysyncadpter.android.MySyncAdapter$1.run(MySyncAdapter.java:123)
01-20 22:42:18.919 E/AndroidRuntime(14447):     at java.lang.Thread.run(Thread.java:1096)
¿Fue útil?

Solución

Su PendingIntent.getBroadcast y alarm.set utilizar la solicitud REQUEST_SYNC_ALL No puedo encontrar esa constante en el alarma doc , ni el PendingIntent doc .

Tal vez estoy fuera de sincronía con el último SDK:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top