Upload
sidereo
View
252
Download
2
Embed Size (px)
DESCRIPTION
Comment utiliser le gestionnaire de compte d'Android. How to use Android's Account Manager.
Citation preview
comptes utilisateurs
et synchronisation
Simon GUEROUT
GDG Montréal
25/09/2104
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