Android. Memorizzazione di dati

Похожие документы
External Storage File pubblici

Corso Base. Lezione 6. Maurizio Cozzetto, Francesco Sarasini

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

I file di dati. Unità didattica D1 1

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Dispensa di database Access

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Corso di programmazione di sistemi mobile 1. Android. Persistenza dei dati

User Tools: DataBase Manager

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Programmazione Android A cura di Carlo Pelliccia. Lezione 12 Database

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Introduzione ai database relazionali

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

19. LA PROGRAMMAZIONE LATO SERVER

Dropbox di classe. É un servizio internet fornito gratuitamente (funzioni base).

14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1. Alessandra Zullo

COSTER. Import/Export su SWC701. SwcImportExport

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

SQL Server Introduzione all uso di SQL Server e utilizzo delle opzioni Olap. Dutto Riccardo - SQL Server 2005.

Introduzione JDBC interfaccia java.sql driver caricare i driver

MySQL Database Management System

Mac Application Manager 1.3 (SOLO PER TIGER)

Il database management system Access

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

GERARCHIE RICORSIVE - SQL SERVER 2008

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

7.4 Estrazione di materiale dal web

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Introduzione al Linguaggio C

Indice. I livelli di Autorizzazione in Sharepoint. Livelli di autorizzazione predefiniti di Windows SharePoint Services 3.0

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Capitolo 13. Interrogare una base di dati

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Lezione 13 Content Provider

Android. Anatomia di una applicazione

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

MANUALE UTENTE Fiscali Free

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Volumi di riferimento

Corso di Amministrazione di Reti A.A. 2002/2003

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

File Server Resource Manager (FSRM)

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

COME CREARE UNA LAN DOMESTICA

DBMS (Data Base Management System)

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Capitolo 4 Pianificazione e Sviluppo di Web Part

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

Access. P a r t e p r i m a

CRM Configurazione e gestione accessi

Manuale istruzioni BlackVue BOZZA

Database e reti. Piero Gallo Pasquale Sirsi

NOZIONI BASE SHELL E SCRIPT LINUX

SPECIFICHE E LIMITI DI EXCEL

Laboratorio informatico di base

Installazione e caratteristiche generali 1

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Schema Tipologia a Stella

Esercizio data base "Biblioteca"

WEBGIS 1.0. Guida per l utente

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Registratori di Cassa

JDBC. A. Bechini Accesso a DataD con Java

Basi Android. Android si definisce open. Con8ene tecnologie open source. Il codice di Android è open. Licenza Open Source Apache 2.

MODULO 5 Appunti ACCESS - Basi di dati

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

Guida Joomla. di: Alessandro Rossi, Flavio Copes

INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla!

Impostare il browser per navigare in sicurezza Opzioni di protezione

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Android. Elenco dei package

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Lifephone. Introduzione. Database. Sito

Sistemi Mobili e Wireless Android Primi passi

Istruzioni per l utilizzo di file KML (Google Earth) con Software dei navigatori satellitari TELE System

Una piattaforma per creare blog, che utilizza il linguaggio PHP e si

Estensioni e modelli. Ancora poco conosciuti, consentono di estendere la suite per l ufficio. Ecco come servirsene

Corso basi di dati Installazione e gestione di PWS

Servizio Telematico Paghe

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Lezione 9. Applicazioni tradizionali

L architettura di un DBMS

Il software di gestione immobiliare più facile da usare. Modulo Web v5.2.

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Транскрипт:

Android Memorizzazione di dati

Introduzione In questa lezione vedremo quali sono i metodi principali messi a disposizione da una applicazione Android per memorizzare dei dati in maniera permanente e successivamente recuperarli.

Memorizzazione di dati Un tipico sistema operativo per PC fornisce un file-system comune che ogni applicazione può usare per memorizzare e rileggere file che a seconda dei permessi possono essere anche letti da altre applicazioni. Android usa un approccio diverso: tutti i dati delle applicazioni, inclusi i file, sono privati di quella applicazione. Esistono dei meccanismi mediante i quali una applicazione può condividere i propri dati con le altre.

Meccanismi di memorizzazione Android fornisce 6 meccanismi per memorizzare e recuperare dati. Il loro utilizzo dipende da tre da 2 aspetti fondamentali: I dati devono essere privati oppure possono essere accessibili da altre applicazioni I dati richiedono molto oppure poco spazio

Meccanismi di memorizzazione Questi meccanismi sono: Shared Preferences (dati pubblici/privati) Internal Storage (dati privati) External Storage (dati pubblici) SQLite Database (dati strutturati privati) Rete (web service) Content Provider (dati privati accessibili)

Preferences... Una applicazione può scrivere e leggere valori (detti Preferences ) condivisi con altre applicazioni dello stesso package ( shared preferences ) oppure privati dell'activity. Per Preferences si intendono le informazioni di personalizzazione di una applicazione come per es. il colore di sfondo, i tipi di carattere, la suoneria predefinita... Tali Preferences possono essere definite tramite codice oppure mediante uno specifico file xml da salvare nella cartella res\xml

Preferences... Per scrivere e leggere le shared preferences si usa il metodo getsharedpreferences(). Per scrivere e leggere le preferences private si usa il metodo getpreferences().

Preferences... E' possibile definire le seguenti preferences: CheckBoxPreferences DialogPreferences EditTextPreferences ListPreferences RingtonePreferences

Preferences <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="first_preferencescreen"> <CheckBoxPreference android:key="wifi enabled" android:title="wifi" /> <PreferenceScreen android:key="second_preferencescreen" android:title="wifi settings"> <CheckBoxPreference android:key="prefer wifi" android:title="prefer WiFi" />... altre preferences... </PreferenceScreen> </PreferenceScreen>

Internal Storage 1/3 I file creati da un'applicazione sono salvati all'interno della directory data/data/<package>/ Soltanto l'app può scrivere all'interno di questa cartella. E' possibile creare sottocartelle all'interno di essa nelle quali le altre applicazioni possono leggere e scrivere. Un'applicazione può scrivere e leggere file locali usando openfileoutput() e openfileinput() con nome locale e percorso.

Internal Storage 2/3 Se ci sono file statici inseriti nel progetto sotto res/raw/, bisogna accedervi usando il metodo openrawresource().

Internal Storage 3/3 I parametri utilizzabili sono: MODE_PRIVATE Nessun accesso dalle altre app MODE_WORLD_READABLE Sola lettura pe le altre app MODE_WORLD_WRITABLE Accesso in scrittura per le altre app MODE_WORLD_READABLE MODE_WORLD_WRITABLE Accesso in lettura / scrittura per le altre app

External Storage 1/4 Un dispositivo Android dispone di un External Storage, tipicamente una SD card, rimovibile o meno Tutti i file e le directory salvate all'interno dalla SD sono accessibili da parte di tutte le app Per poter accedere in lettura non è necessario specificare alcun permission, mentre in scrittura è necessario specificare il permesso: android.permission.write_external_storage Per ottenere la root della memoria esterna: File sdcarddir = Environment.getExternalStorageDirectory();

External Storage 2/4 Prima di procedere nelle operazioni di lettura/scrittura sulla SD card è necessario verificarne l'accessibilità mediante un apposito controllo: boolean mexternalstorageavailable = false; boolean mexternalstoragewriteable = false; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { mexternalstorageavailable = mexternalstoragewriteable = true; } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { } else { mexternalstorageavailable = true; mexternalstoragewriteable = false; mexternalstorageavailable = mexternalstoragewriteable = false;

SD Card nell'emulatore

External Storage 3/4 Per accedere a file privati sulla SD card si utilizza: getexternalfilesdir() per API level 8 getexternalstoragedirectory() per API level < 8 Nel primo caso i file saranno creati all'interno della SD card nella directory: /Android/data/<package_name>/files/ I file così creati sono file privati dell'app Tipicamente non dovrebbero essere visibili alle altre app. Non esiste alcuna garanzia di sicurezza per questi file Se l'app viene rimossa questi file saranno cancellati.

External Storage 4/4 Sulla SD card possono essere disponibili delle aree condivise all'interno delle qualsi salvare file pubblici: DIRECTORY_MUSIC, DIRECTORY_PICTURES, DIRECTORY_RINGTONES... Per accedere a file condivisi sulla SD card si utilizza: getexternalstoragepublicdirectory() per API level 8 getexternalstoragedirectory() per API level < 8 Nel primo caso i file saranno creati all'interno della SD card nella directory predefinita per il tipo di file File path = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES); Nel secondo caso si dovrà esplicitare il path da usare.

SQLite Android supporta il sistema di database SQLite. SQLite è open source, supporta le funzionalità standard dei database relazionali e richiede pochissima memoria a runtime (circa 250 KBytes) Supporta i tipi di dato TEXT, INTEGER e REAL Per utilizzare SQLite in Android non è necessario alcun tipo di installazione o configurazione. Un database SQLite è privato: pertanto se una app vuole esporne il contenuto dovrà farlo mediante i Content Provider

SQLite Il package android.database contiene tutte le classi generali per operare con il database Il package android.database.sqlite contiene le classi specifiche di sqlite. Android include nell'sdk il tool sqlite3, che permette di visualizzare il contenuto delle tabelle, eseguire comandi SQL ed effettuare sui database SQL altri tipi di operazioni. Tutti i database sul dispositivo sono memorizzati nella directory /data/data/<nome_package>/databases

SQLiteOpenHelper La classe che dovrà gestire il nostro database è ereditata da SQLiteOpenHelper Normalmente si sovrascrivono i metodi oncreate() per creare il database e onupgrade() per aggiornare il database in caso di modifiche nel suo schema. Come primary key delle tabelle si utilizza _id. Una buona pratica è quella di definire classe per ciascuna Tabella del database con almeno i due metodi oncreate() e onupdate().

Cursor Il Cursor è l'oggetto restituito dall'esecuzione di una query e punta all'insieme dei risultati della query Per conoscere il numero degli elementi si utilizza il metodo count() Per navigare tra i risultati si usano i metodi movetofirst(), movetonext() e isafterlast() Per accedere ai dati del Cursor si utilizzano i metodi getlong(indicecolonna) e getstring(indicecolonna)

SQLiteDatabase 1/2 SQLiteDatabase è la classe base mediante la quale opereremo con il nostro database Fornisce i metodi insert(), update() e delete() Il metodo execsql() ci permentte di eseguire direttamente del codice SQL (con dei limiti) db.execsql("create TABLE customer (_id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL, address TEXT);"); Il metodo rowquery() esegue una query SQL e restituisce un oggetto Cursor Cursor mcursor = db.rawquery( SELECT * FROM customer WHERE _id = 1;, null);

SQLiteDatabase 2/2 Il metodo query() restituisce un oggetto Cursor sull'insieme dei risultati Cursor query (String table, String[] columns, String selection, String[] selectionargs, String groupby, String having, String orderby, String limit)

Content Provider Se si vogliono rendere pubblici dei dati bisogna creare un Content Provider. Questo oggetto permette di memorizzare dati accessibili da tutte le applicazioni. E' l'unico modo attraverso il quale package diversi possono condividere dati. Android di serie fornisce Content Provider per i tipi di dati più comuni (es. contatti o file multimediali).

Interrogare un Content Provider Il modo nel quale un Content Provider memorizza i dati è specifico dell'implementazione, ma tutti i Content Provider devono rispettare una convenzione comune per effettuare una query e restituire i risultati. Ogni Content Provider espone una stringa (URI, Uniform Resource Identifier) univoco. Un URI può indicare tutti gli oggetti di un certo tipo oppure uno specifico record.

Sintassi dell'uri A: prefisso standard (sempre uguale) B: percorso completo della classe C: percorso completo del tipo di dato D: se presente è l'id dello specifico record

Esempi di URI content://contacts/people/ è l'uri che restituisce la lista di tutti i contatti sul dispositivo. content://contacts/people/23 è l'uri che restituisce il contatto con ID=23 content://media/internal/images/ restituisce la lista delle immagini memorizzate nel dispositivo content://media/external/images/ restituisce la lista delle immagini contenute nella scheda di memoria (es. SD-Card)

Content Provider - Permission Il modello di sicurezza di Android richiede che un'applicazione non possa eseguire una data azione sensibile senza aver richiesto ed ottenuto la relativa Permission Tale richiesta deve essere dichiarata all'interno dell' AndroidManifest.xml e viene gestita a runtime, ma è durante l'installazione che l'utente concede o non concede la Permission richiesta. <uses-permission android:name="android.permission.read_contacts"> </uses-permission>

Content Provider - Esempio L'esempio seguente accede al Content Contatti elencando il contenuto ContentResolver cr = getcontentresolver(); Uri uri = Uri.parse("content://com.android.contacts/contacts");); Cursor cur = cr.query(uri, null, null, null, null); if (cur.getcount() > 0) { while (cur.movetonext()) { String id = cur.getstring( cur.getcolumnindex(contactscontract.contacts._id)); String name = cur.getstring( cur.getcolumnindex(contactscontract.contacts.display_name)); } } cur.close();

Rete Infine non bisogna dimenticare che ovviamente i dati oltre che sul dispositivo possono essere memorizzati sulla rete. I package utili a questo scopo sono: java.net.* e android.net.*

Conclusioni In questa lezione abbiamo visto gli strumenti messi a disposizione da Android per la memorizzazione permanente dei dati: le Preferences, i File, i Database, i Content Provider e ovviamente la rete.