miércoles, 24 de abril de 2013

Cuentas en Android Parte II


Antes de leer este post es convenietne haber leido el anterior Cuentas en Android Parte I

6. Implementacion del Account manager
6.1 Introduccion

La implementacion de un Account Manager es muy inusual ya que para verlo funcionar tienes que tener al menos 3 archivos.
  1. La activity que utiliza el account manager
  2. El Servicio que debe extender la clase AbstractAccountAuthenticator
  3. El Authenticator (XML, como se va ver la creacion de una cuenta)
  4. The preference file (XML, la configuracion de la cuenta) - Opcional
  5. Las clases que interactuan con el servicio - Opcional

6.2 La actividad principal
La actividad que utiliza account manager coje una instancia de la misma e invoca sus metodos. La mayoria estan explicados aqui.

6.2 El Servicio

El servicio es una de las mas importantes piezas para interactuar con el account manager. Esta es usada cuando el usuario puede crear una cuenta explicitamente, "sin usar una applicacion para eso", sino usando el proprio sistema operativo Android. Quiero decir, cuando el usuario hace click en Configuraciones->; Cuentas y Sincornizacion ->; Crear nueva cuenta (Settings ->; Account and Sync ->; Creates a new accounts), el sistema le monstrara la lista de cuentas que puede crear explicitamente. Si una applicacion puede crear una cuenta, es de esperar que el usuario la pueda crear sin esa aplicacion (de forma explicita).

Cuando el usuario hace click en algun elemento, el account manager vinculara un servicio, el cual debe retornar una implementacion de AbstractAccountAuthenticator. Ademas, el sistema ira invocar un metodo addAccount de tal servicio. Este metodo debe lanzar una actividad que permita el usuario introducir sus credenciales (nombre de usuario, contraseña, etc) y finalmente retornar la respuesta apropriada al account Manager. Aqui hay un buen ejemplo de su implementacion:

Este servicio sera declarado en el fichero AndroidManifest de una manera especial:

android:exported="true" android:process=":auth">



android:resource="@xml/authenticator" />

fuente

El codigo anterior asocia el servicio con el fichero xml que le denominamos authenticator. Este debe ser guardado en xml folder.

6.3 El Authenticator
El authenticator assigna una coleccion de parametros:
  • Account type: El tipo de cuenta. Esta debe ser la misma que cuando la cuenta es creada explicitamente. De lo contrario un error, aparentemente sin sentido saldra. 
  • Icons: Los iconos que apareceran en el account manager
  • Label: El texto de descripcion.
  • AccountPreferences: La localizacion del fichero XML el cual indica la configuracion (preference) que aparecera una vez la cuenta ha sido creada. 
  • etc.
He aqui un ejemplo del fichero xml:

android:accountType="fm.last.android.account"
android:icon="@drawable/icon"
android:smallIcon="@drawable/icon"
android:label="@string/app_name"
android:accountPreferences="@xml/account_preferences"/>
fuente

6.4 Preference file
El siguiente archivo preference es un archivo xml comun y corriente de preference
He aqui un ejemplo:


   

    android:key="account_settings"
                                    android:title="Account Settings"
                                    android:summary="Sync frequency, notifications, etc.">
        android:action="fm.last.android.activity.Preferences.ACCOUNT_SETUP"
                    android:targetPackage="fm.last.android"
                    android:targetClass="fm.last.android.activity.Preferences" />
    




fuente

6.5 El Service helper classes
El service helper classes son usados para ayudar un especifico metodo de la clase. Por ejemplo, el usuario puede desear crear una clase especifica que permita al usuario crear una cuenta, cuando el metodo addAccount del servicio sea llamado.

Para este especifico caso, hay una clase especifica llamada AccountAuthenticatorActivity la provee google que hace la autenticacion un poco mas facil. He aqui el codigo.

Lo que hace esta clase es permitir al usuario, asignar el resultado de la autenticacion, poniendo el nombre de usuario y el tipo de cuenta, cuando este termina lo devuelve al account manager. El uso de esta clase no es obligatorio. Se puede crear cualquier actividad como un AccountAuthenticatorActivity. Vease el ejemplo siguiente.

No hay comentarios:

Publicar un comentario