sincronización nube los internet guarda google extensión extension donde documentos docs conexión conexion chrome archivos android rest adapter sync account

android - nube - sin conexión google



Adaptador de sincronización sin cuenta (3)

Como dicen los desarrolladores de Android

Incluso si su aplicación no usa cuentas, aún necesita proporcionar un componente de autentificación. Si no utiliza las cuentas o el inicio de sesión del servidor, la información manejada por el autenticador se ignora, por lo que puede proporcionar un componente autenticador que contenga implementaciones del método stub. También debe proporcionar un Servicio encuadernado que permita que el marco del adaptador de sincronización llame a los métodos del autenticador.

Hay un artículo completo sobre Cómo crear un autenticador Stub . Me doy cuenta de que esta pregunta es antigua y una respuesta fue aceptada hace mucho tiempo, pero sentí que una reciente adición a los documentos oficiales debería incluirse aquí.

Necesito buscar algunos datos en la nube desde mi aplicación. He visto el video de Google IO en aplicaciones de Android RESTful @ http://www.youtube.com/watch?v=xHXn3Kg2IQE&t=43m58s Recomienda en las diapositivas finales usar un Adaptador de sincronización para integrarse con el sistema Android.

Más tarde descubrí que uno tiene que usar una Cuenta para implementar SyncAdapter. Mi aplicación no usa una cuenta. Los usuarios pueden descargar datos libremente sin registrarse. ¿Puedo seguir usando SyncAdapter? ¿Hay una cuenta ficticia de acciones que pueda usar?

Editar: tengo un proveedor de contenido para mi aplicación, así que no hay problema

Edit2: Acabo de ver las aplicaciones Weather y Stock en Configuración -> Cuentas y sincronización. Puedes ver que permiten la sincronización, pero no tienen un botón para eliminar la cuenta. Por otro lado, las aplicaciones de Google, Facebook y Skype permiten la sincronización PLUS tienen un botón para eliminar la cuenta. Esto significa que Weather y Stock no usan cuentas, mientras que Google, Facebook y Skype sí.

Los tutoriales que encontré @ http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter/ y @ http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/ dice que uno DEBE tener una cuenta para usar Sync Adapter. : S ???


He creado un adaptador de sincronización de contactos donde no tengo una autorización de cuenta ni pantallas de configuración. No fue tan difícil. No creo que tener que lidiar con las cosas de la cuenta de Android fue un gran problema.

Cita de tu enlace tutorial:

La mala noticia es que no hay una funcionalidad de "stock" para brindarle una manera fácil de proporcionar una cuenta al sistema. Sin embargo, en el mismo ejemplo de adaptador de sincronización que viene con el SDK, hay un montón de código que puede tomar prestado para darle la funcionalidad de la cuenta. A menos que desee una pantalla de credenciales personalizadas, puede incluir todo el código en el paquete com.example.android.samplesync.authenticator con solo algunos cambios menores.

Así que básicamente es solo copiar y pegar del ejemplo, eso es más o menos lo que hice y funcionó bien.

No estoy seguro, pero todos los adaptadores que no tienen "Eliminar cuenta" parecen ser adaptadores de ROM incorporados en todos los dispositivos que he visto. No estoy seguro de que tengas que preocuparte por eso.


Sigo recibiendo muchas notificaciones de esta pregunta, así que pensé que compartiría esta información. Así es como agrega SyncAdapter sin cuenta. Puedes poner esto onCreate of MyApplication extends Application class. Esto supone que ya tiene SyncAdapter un SyncAdapter y un ContentProvider . Puede hacerlo siguiendo los tutoriales que figuran en la pregunta.

final String ACCOUNT_NAME = "MyApp"; final String ACCOUNT_TYPE = "com.myapp.account"; final String PROVIDER = "com.myapp.provider"; Account appAccount = new Account(ACCOUNT_NAME,ACCOUNT_TYPE); AccountManager accountManager = AccountManager.get(getApplicationContext()); if (accountManager.addAccountExplicitly(appAccount, null, null)) { ContentResolver.setIsSyncable(appAccount, PROVIDER, 1); ContentResolver.setMasterSyncAutomatically(true); ContentResolver.setSyncAutomatically(appAccount, PROVIDER, true); }

res / xml / syncadapter.xml

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" android:contentAuthority="@string/provider" android:accountType="@string/account_type" android:userVisible="true" android:supportsUploading="true" />

res / xml / authenticator.xml

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" android:accountType="@string/account_type" android:icon="@drawable/app_icon" android:smallIcon="@drawable/app_icon" android:label="@string/app_label" />