External Storage File pubblici



Похожие документы
Android. Memorizzazione di dati

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

Corso Base. Lezione 6. Maurizio Cozzetto, Francesco Sarasini

Modulo 7. Programmazione avanzata in Android

Lezione 11 Accesso al file system

I file di dati. Unità didattica D1 1

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

Corso sul linguaggio Java

Un esercizio d esame. Flavio De Paoli

Java threads (2) Programmazione Concorrente

TECNICHE AVANZATE DI I/O. Al loro livello più basso, tutti i file scritti sull hard disk. Training per esperti SU FILE

20 - Input/Output su File

Algoritmi di Ricerca. Esempi di programmi Java

GERARCHIE RICORSIVE - SQL SERVER 2008

La struttura dati ad albero binario

Corso di Reti di Calcolatori L-A

Programmazione Android A cura di Carlo Pelliccia. Lezione 12 Database

Esempi di esercizi d esame

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Accesso a basi di dati con ASP. Algoritmo per visualizzare un DB

CUSTOMIZZAZIONE CALENDARIO CRM VTIGER 5.0.4

La geolocalizzazione

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Java: Compilatore e Interprete

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

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:

Esercizi della lezione 5 di Java

Flussi, lettori e scrittori

1. Soluzione esercizio XYZ SpA

Office Web Components in programmi C# da

Programmare in Java. Olga Scotti

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

10 - Programmare con gli Array

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel , dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Come usare P-touch Transfer Manager

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco

Introduzione al Linguaggio C

Lezione 13 Content Provider

Introduzione JDBC interfaccia java.sql driver caricare i driver

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

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

GESTIONE INFORMATICA DEI DATI AZIENDALI

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Altri tipi di connessione

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

costruttori e distruttori

SharePoints è attualmente disponibile in Inglese, Italiano e Francese.

Reti di Telecomunicazione Lezione 7

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

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

Programmazione a Oggetti Lezione 10. Ereditarieta

Come inserire i dati nella Scheda Attività

Permessi Android Mobile Programming Prof. R. De Prisco

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

COSTER. Import/Export su SWC701. SwcImportExport

1 JSPDynPage, componenti portale e Java Server Pages

I/O su Socket TCP: read()

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Funzioni in C. Violetta Lonati

SAPIENZA Università di Roma, Facoltà di Ingegneria

Il tipo di dato astratto Pila

Installare sbackup su ubuntu da terminale con il comando sudo apt get install sbackup oppure si può usare Synaptic

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale.

Esercitazioni 7 e 8. Bounded Buffer con sincronizzazione Java (1)

Il blog di Emanuele Mattei in ambito Database

Matlab: Gestione avanzata dei file

Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Inizializzazione, Assegnamento e Distruzione di Classi

Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging

Programmazione. Android

IPC System V. Code di messaggi

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Architettura Client-Server

SUITE BY10850 Editor Parametri e Configurazione

Fondamenti di Informatica 2

Android. Intent e intent-filter. diegozabot@yahoo.it

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Progettazione : Design Pattern Creazionali

Note applicative AN001: Driver ModBus

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Esercitazioni aggiuntive Martedì Laboratorio L-12

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Interprocess Communications - II. Franco Maria Nardini

Le stringhe. Le stringhe

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Programmazione ad oggetti

Definizione di classi con array di oggetti

Android world. Sviluppare app per Android. Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...)

Esercitazione n 4. Obiettivi

Come installare e configurare il software FileZilla

Librerie. Laboratorio di Informatica Antonio Monteleone 28

Транскрипт:

Data Storage Shared Preferences dae privae, coppie chiave- valore 128 Internal Storage File privae External Storage File pubblici Database SQLite DaE struourae in database privae SharedPreferences 129 Classe SharedPreferences permeoe di salvare e recuperare dae usando coppie di chiave- valore 2 metodi della classe AcEvity getsharedpreferences( filename ) quando si vogliono usare più file di preferenze (dae) getpreferences() quando basta un solo file resetuiscono un oggeoo SharedPreferences 1

SharedPreferences 130 SharedPreferences obj; Scrivere i dae: serve un editor lo si o]ene con il metodo edit SharedPreferences.Editor editor = obj.edit(); Con l editor si possono può usare put : editor.putboolean("key", bool_value); editor.commit(); Leggere i dae: is usa get Boolean v = obj.getboolean("key"); Internal Storage 131 Per ogni app il sistema operaevo prevede una directory privata solo l app può accedere a questa directory se l app viene disistallata, la directory viene cancellata Per creare e scrivere un file 1. Chiamale openfileoutput(filename, mode) resetuisce un FileOutputStream 2. Scrivere nel file (write()) 3. Chiudere lo stream (close()) 2

Internal Storage 132 String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openfileoutput(filename, Context.MODE_PRIVATE); fos.write(string.getbytes()); fos.close(); La modalità può essere MODE_PRIVATE MODE_APPEND MADE_WORLD_READABLE MADE_WORLD_WRITABLE Internal Storage 133 Per leggere un file 1. Chiamale openfileinput(filename) resetuisce un FileInputStream 2. Leggere dal file (read()) 3. Chiudere lo stream (close()) È possibile usare un file staeco meoendolo nella directory res/raw dell applicazione. Lo si può leggere usando openrawresource passando come argomento l ideneficatore R.raw.<filename>. Il metodo openrawresource resetuisce un InputStream che può essere usato per leggere il file. 3

Internal Storage getfilesdir() ResEtusice la directory privata dell app (dove vengono salvae i file) getdir() Crea (o apre se esiste) una directory all interno dello spazio privato dell app deletefile() cancella on file nello spazio privato filelist() ResEtuisce un array di file, quelli presene nello spazio privato 134 File temporanei 135 Per i file temporanei si può usare una directory cache Android cancellerà i file in questa directory SE necessario (quando manca spazio) getcachedir() resetuisce la directory cache è comunque responsabilità dell app cancellare i file non si dovrebbe usare la directory cache per file grandi (grandezza massima raccomandata 1MB) 4

External Storage 136 Android permeoe l uelizzo di una memoria esterna Epicamente una SD card File nella memoria esterna sono pubblici (world- readable) Occorre richiedere il permesso di leoura/scrioura La memoria esterna può essere rimossa quindi non si può assumere che i file siano sempre disponibili External Storage 137 <manifest...> <uses- permission android:name="android.permission.write_external_storage android:maxsdkversion="18" /> </manifest> Permesso Write include il permesso Read <manifest...> <uses- permission android:name="android.permission.read_external_storage /> </manifest> A parere da Android 4.4, per lo spazio privato non c è bisogno di permessi. 5

External Storage /* Checks if external storage is available for read and write */ public boolean isexternalstoragewritable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { return true; return false; /* Checks if external storage is available to at least read */ public boolean isexternalstoragereadable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state) Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { return true; return false; 138 Condividere file con altre app getexternalstoragepublicdirectory(type) type: DIRECTORY_PICTURES, DIRECTORY_MUSIC, DIRECTORY_RINGTONES, Esempio: metodo che crea una nuova dir per delle foto nella dir pubblica delle immagini public File getalbumstoragedir(string albumname) { // Get the directory for the user's public pictures directory. File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), albumname); if (!file.mkdirs()) { Log.e(LOG_TAG, "Directory not created"); return file; 139 6

Database Android fornisce supporto per database SQL solo all interno dell app 140 Per usare un database Creare una soooclasse di SQLiteOpenHelper sovrascrivere il metodo oncreate() Quindi si crea un nuovo Helper: dbhelper = new DatabaseOpenHelper(this); Dal quale si ricava un database SQLiteDatabase db = dbhelper.getwritabledatabase(); Database Sul database si possono applicare comandi standard SQL 141 Tipicamente il database viene creato nel metodo oncreate() della soooclasse DatabaseOpenHelper Nell app vengono usae: db.insert() db.delete() db.update() 7

Database public class DicEonaryOpenHelper extends SQLiteOpenHelper { private staec final int DATABASE_VERSION = 2; private staec final String DICTIONARY_TABLE_NAME = "diceonary"; private staec final String DICTIONARY_TABLE_CREATE = "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" + KEY_WORD + " TEXT, " + KEY_DEFINITION + " TEXT); ; DicEonaryOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); @Override public void oncreate(sqlitedatabase db) { db.execsql(dictionary_table_create); @Override public void onupgarde(sqlitedatabase db, int oldversion, int newversion) { // override necessario 142 Data Storage 143 DataStorageIntFile DataStorage DataStoragePreferences DataStorageSQL 8