gdg montréal - account manager basics and use case

Post on 03-Jul-2015

252 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Comment utiliser le gestionnaire de compte d'Android. How to use Android's Account Manager.

TRANSCRIPT

comptes utilisateurs

et synchronisation

Simon GUEROUT

GDG Montréal

25/09/2104

Simon GUEROUT

Sidereo Solutions Inc.

@saiimons

+SimonGuerout

s@sidereo.com

Je vais vous parler de

L’Authenticator

L’Authenticator<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"android:accountType="com.android.email"

android:icon="@mipmap/ic_launcher_mail"android:smallIcon="@drawable/stat_notify_email"android:label="IMAP"android:accountPreferences="@xml/account_preferences"

/>

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"

android:accountType="com.android.email"android:icon="@mipmap/ic_launcher_mail"android:smallIcon="@drawable/stat_notify_email"android:label="POP3"android:accountPreferences="@xml/account_preferences"

/>

L’Account

Le ContentProvider

Le ContentProvider

<providerandroid:name=".provider.EmailProvider"

android:authorities="com.android.email.provider;com.android.email.notifier"android:exported="true"android:permission="com.android.email.permission.ACCESS_PROVIDER"android:label="@string/app_name"/>

Le SyncAdapter

public void onPerformSync(Account account, Bundle extras, String authority,ContentProviderClient provider, SyncResult syncResult

) {…

}

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"

android:contentAuthority="com.android.email.provider"android:accountType="com.android.email"

android:supportsUploading="true"android:allowParallelSyncs="true"

/>

Le ContentResolver

Fonctionnement

Pros & cons

The Android Way

Gestion facile de la synchronisation

Plus de développement

Cas d’usage

...

Cas d’usage

C’est tout à fait adapté !

Oui mais...

Liste de comptes

public static final class Source implements BaseColumns {public static final String TYPE_ITEM = CURSOR_ITEM_BASE_TYPE + "/" + Source.class.getCanonicalName().toLowerCase();public static final String TYPE_DIR = CURSOR_DIR_BASE_TYPE + "/" + Source.class.getCanonicalName().toLowerCase();public static final String FIELD_NAME = "name";public static final String FIELD_TYPE = "type";public static final String ID = TABLE_DEFAULT_ID;private Source() {}

}

Liste des informations affichées

public static class News implements BaseColumns {public static final String TYPE_ITEM = CURSOR_ITEM_BASE_TYPE + "/" +

News.class.getCanonicalName().toLowerCase();public static final String TYPE_DIR = CURSOR_DIR_BASE_TYPE + "/" +

News.class.getCanonicalName().toLowerCase(); public static final String FIELD_SOURCE_ID = "source_id";public static final String FIELD_ORIGINAL_ID = "original_id";public static final String FIELD_TITLE = "title";public static final String FIELD_SUMMARY = "summary";public static final String FIELD_URL = "url";public static final String FIELD_DATE = "date";public static final String FIELD_IMAGE = "img";public static final String ID = TABLE_DEFAULT_ID;

private News() {}

}

Plusieurs Authenticator

Avec un seul Authenticator

Choix d’architecture

Démo

Conclusion

top related