2011-02-28 11 views

Respuesta

4

Creo que lo que quiere es la siguiente:

ContentResolver.setSyncAutomatically(account, authority, true/false); 
22

creo que busca

ContentResolver.setMasterSyncAutomatically(<boolean>); 

Qué documentos dice:

establece la configuración de sincronización automática maestro eso se aplica a todos los proveedores y cuentas. Si esto es falso, se ignorará la configuración de sincronización automática por proveedor .

Este método requiere que la persona que llama tenga el permiso WRITE_SYNC_SETTINGS.

Así que no se olvide de añadir el permiso en manifest.xml:

<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> 

Esto debería desactivar/activar todas las sincronizaciones.


@Sajmon: He actualizado esta, creo que es una respuesta muy útil (estoy usando esto en mi proyecto personal).

+1

+1 He editado y actualizado su respuesta. Ahora creo que esa cosa es más clara. – Sajmon

+0

¿Es posible hacerlo desde ADB? –

0

Ben es correcto.

Es necesario utilizar

ContentResolver.setSyncAutomatically(account, authority, true/false); 

también tendrá que añadir permisos "WRITE_SYNC_SETTINGS"

<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/> 
+0

¿Hay alguna manera de evitar que el usuario deshabilite la sincronización a través de la pantalla de configuración, para que la sincronización siempre funcione? – KJEjava48

3

Código de Cuentas de sincronización programación:

sincronización una vez:

public static void syncAllAccounts(Context contextAct) throws Exception { 
    AccountManager manager = AccountManager.get(contextAct); 
    Account[] accounts = manager.getAccountsByType("com.google"); 
    String accountName = ""; 
    String accountType = ""; 
    for (Account account : accounts) { 
     accountName = account.name; 
     accountType = account.type; 
     break; 
    } 

    Account a = new Account(accountName, accountType); 
    ContentResolver.requestSync(a, "com.android.calendar", new Bundle()); 
} 

Sync en el intervalo de tiempo de forma automática:

public static void syncAllAccountsPeriodically(Context contextAct, long seconds) throws Exception { 
    AccountManager manager = AccountManager.get(contextAct); 
    Account[] accounts = manager.getAccountsByType("com.google"); 
    String accountName = ""; 
    String accountType = ""; 
    for (Account account : accounts) { 
     accountName = account.name; 
     accountType = account.type; 
     break; 
    } 

    Account a = new Account(accountName, accountType); 
    ContentResolver.addPeriodicSync(a, "com.android.calendar", new Bundle(), seconds*1000); 
} 

Si desea sincronización cuentas vez, llaman primera método y si quieres sincronización en un tiempo de intervalo tiene que llamar al segundo método y pasar segundos (como 10 segundos) como argumentos en él.

Hecho

Cuestiones relacionadas