C'è un modo per memorizzare i dati delle applicazioni Android sulla scheda SD anziché nella memoria interna? So come trasferire il database sqlite dell'applicazione dalla memoria interna alla SDCard, ma cosa succede se la memoria interna si riempie in primo luogo? Come lo gestiscono tutti?memorizzazione dei dati dell'applicazione Android su scheda SD
risposta
Attenzione: Questa risposta è obsoleta. È necessario utilizzare Environment.getExternalStorageDirectory() per ottenere il percorso root della scheda SD come indicato nelle risposte di seguito.
Vecchio risposta in modo che i commenti su questo ha senso:
Aggiunta /sdcard/
alla radice il vostro percorso dovrebbe dirigere l'applicazione Android per utilizzare la scheda SD (almeno funziona in questo modo con il G1). Gli oggetti del file system di Android ti danno la possibilità di controllare le dimensioni dei file ... quindi dovrebbe essere possibile (se difficile) scrivere un codice di fail-over. Questo codice dovrebbe regolare il percorso di root se la memoria interna si riempiva.
Il problema con l'utilizzo della SDCard è che non si può assumere in modo affidabile che sarà presente sempre quando l'applicazione ne ha bisogno. Questo non è il caso con la memoria interna. Finché l'applicazione non si basa su questi dati per eseguirlo dovrebbe andare bene.
È consigliabile utilizzare lo Environment.getExternalStorageDirectory() piuttosto che il codice "/ sdcard" Non è sempre sicuro che il nome della cartella verrà chiamato così. Inoltre, la classe Environment offre un metodo getExternalStorageState() per verificare se la memoria esterna è disponibile.
Questo non funziona sempre perché apparentemente la posizione della scheda SD * reale * di Samsung è 'Environment.getExternalStorageDirectory() +"/external_sd "'. Altri dispositivi avranno posizioni diverse. – Muz
Ecco un altro piccolo trucco. Lo Application ha un numero di metodi chiamati per acquisire percorsi. In particolare l'applicazione ha il metodo getDatabasePath con viene utilizzato da SQLiteOpenHelper per costruire il percorso. Una classe di applicazione personalizzata può sovrascrivere questi metodi per fornire percorsi diversi compresi i percorsi nello getExternalStorageDirectory.
La memoria esterna è specifica dell'applicazione o pubblica. Esistono vari metodi, che sostituiscono il meccanismo getExternalStorageDirectory, getExternalFilesDir() e getExternalStoragePublicDirectory() rispettivamente.
alcuni dispositivi utilizzano/mnt/sdcard come punto di origine della scheda SD.
Per iniziare:
A seconda del modello/OS, è possibile accedere alla directory principale della scheda SD con:
File externalStorage = Environment.getExternalStorageDirectory();
Questo farà riferimento alla memoria sd interna o la memoria SD interna.
externalStorage.getAbsolutePath()
restituisce uno dei seguenti valori
"/ sdcard /" o "/ mnt/sdcard /"
Per accedere alla memoria esterna SD o micro SD, che di solito si collega dall'esterno del telefono/tablet, è necessario utilizzare una delle seguenti cartelle create da Android per puntare alla memoria esterna:
"/mnt/sdcard/sd"
"/mnt/sdcard/external_sd"
"/sdcard/external_sd"
"/sdcard/sd"
"/mnt/sdcard/"
ps: si può notare una cartella vuota external_sd
o sd
sulla sdcard interna
memoria, questa cartella è vuota e la sua usato per indicare scheda micro sd esterna.
al termine assicurarsi di avere accesso in lettura/scrittura alla scheda SD android.permission.WRITE_EXTERNAL_STORAGE
nel file manifest android xml.
finalmente è necessario specificare il nome del file e il vostro pronto
private SQLiteDatabase DB = null;
private static final String DATABASE_NAME = "MyDb.db";
////////////
File sdcard = Environment.getExternalStorageDirectory();
String dbfile = sdcard.getAbsolutePath() + File.separator+ "external_sd" + File.separator + DATABASE_NAME;
DB = SQLiteDatabase.openDatabase(dbfile, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS);
///////////
e il vostro pronto ad andare ...
Sfortunatamente, questo non è assolutamente standard. Sul LG Optimus è in/mnt/sdcard/_ExternalSD. Spero che qualcuno su google rivedrà tutto questo. Il nome dei media è così brutto (esterno ???) e i documenti non dicono una parola su come accedere alla seconda sdcard quando ce n'è una integrata. – Snicolas
Puoi aiutare a ottenere il nome di tutte le cartelle presenti nella scheda SD. –
- 1. Memorizzazione di dati su scheda SD in Android
- 2. Problemi con scheda SD Android
- 3. Android KitKat 4.4 cartella su scheda SD
- 4. Android Salva immagine su scheda SD
- 5. Salvataggio di bitmap su scheda SD senza comprimerlo in Android
- 6. Glide. Cache su memoria esterna (scheda SD)
- 7. Installazione di app Android senza scheda SD
- 8. scrive file su scheda sd e non su memoria USB
- 9. Scansione scheda SD Android per nuovi file
- 10. Efficace memorizzazione nella cache dei dati caricati su Android
- 11. (ri) il montaggio della scheda SD su emulatore Android
- 12. Come rimuovere la scheda SD in modo programmatico su Android
- 13. Decomprimere un file zippato su scheda SD nell'applicazione Android
- 14. Android: salva l'immagine dall'URL sulla scheda SD
- 15. Android spostarsi sul comportamento della scheda SD
- 16. Android scrittura alla cartella della scheda SD
- 17. Mostra tutta la musica su scheda SD
- 18. Scrapy: memorizzazione dei dati
- 19. Dove l'emulatore Android memorizza i file della scheda SD?
- 20. Inserire manualmente i file nell'emulatore di Android Scheda SD
- 21. Come posso ottenere la dimensione di una cartella su scheda SD in Android?
- 22. Memorizzazione dei dati nella memoria
- 23. Come posso ascoltare il montaggio della scheda SD in Android?
- 24. Come aprire la cartella della scheda SD in Android AVD?
- 25. Caricamento estraibile dalla scheda SD
- 26. Autorizzazione a leggere i dati dalla scheda SD
- 27. Come installare la scheda SD sull'emulatore Android (1.6)
- 28. Tutti i dispositivi Android hanno una scheda SD interna?
- 29. Memorizza l'immagine bitmap sulla scheda SD in Android
- 30. SD limite della carta di scrittura - la registrazione dei dati
come si fa a regolare il percorso principale? – user121196
Regola il percorso root che stai utilizzando. (Che era un po 'di confusione ... non è possibile modificare il percorso root di Android) – haseman
Sto usando SQLiteDatabase per creare il database, tuttavia l'argomento del nome del costruttore non può contenere un percorso, come è possibile che io crei il database sulla sdcard? – user121196