Données temporaires d'une activité

Stockage de données persistantes

Manipulation de fichiers

Fichiers internes

Fichiers externes

Répertoires cache

Sauvegarde des fichiers d'application

Préférences d'application

Base de données SQLite3

Gestion de tables SQLite3

Requêtes SQL sur enregistrements

SQLiteOpenHelper


public static final String DB_NAME = "gpsLog";
public static final int VERSION = 1;
public GPSLogBaseHelper(Context context) { super(context, DB_NAME, null, VERSION); }

SQLiteDatabase

Ne jamais intégrer directement les arguments dans la requête (faille d'injection de commandes SQL)

Cursor

Écriture d'enregistrements

ContentProvider

Principe de fonctionnement

Types MIME d'URI

ContentProvider.query(...)

query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

ContentProvider.{insert(), update(), delete()}

Fournitures de méthodes et fichiers par un ContentProvider

ContentResolver

Les permissions

Création de permissions


 <permission android:name="fr.upemlv.gpslog.GPS_TRACE_READ"
        android:label="@string/perm_label_GPSTraceRead"
        android:description="@string/perm_desc_GPSTraceRead"
        android:permissionGroup="android.permission-group.PESONAL_INFO"
        android:protectionLevel="dangerous" />

 <permission android:name="fr.upemlv.gpslog.GPS_TRACE_WRITE"
        android:label="@string/perm_label_GPSTraceWrite"
        android:description="@string/perm_desc_GPSTraceWrite"
        android:permissionGroup="android.permission-group.PESONAL_INFO"
        android:protectionLevel="dangerous" />

Remarque : pour être accessible d'une autre application, le ContentProviderdoit également posséder la propriété android:exported="true"

Protection d'un composant par une permission


<provider ...>
	<path-permission android:path="string"
                 android:pathPrefix="string"
                 android:pathPattern="string"
                 android:permission="string"
                 android:readPermission="string"
                 android:writePermission="string" />
</provider>

Demande de permission

Permissions temporaires

Transmission d'Intent avec permission temporaire d'accès :


Uri uri = Uri.parse("content://fr.upemlv.gpslogger.provider/log/" + id);
Intent intent = new Intent();
intent.setAction(MAP_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setData(uri);
startActivity(intent) ;

Accord/révocation de permissions (méthodes de Context) :


public void grantUriPermission(String toPackage, Uri uri, int modeFlags)
public void revokeUriPermission(Uri uri, int modeFlags) 

Presse-papier

Élément dans le presse-papier

Fonctionnement du presse-papier