Autore Topic: salvare file nella memoria esterna (SD)  (Letto 387 volte)

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
salvare file nella memoria esterna (SD)
« il: 05 Agosto 2015, 09:09:12 CEST »
0
Buongiorno a tutti ragazzi, innanzitutto scusate se la sezione non è adatta al mio tipo di richiesta. Tuttavia ho una domanda tanto semplice ma che mi ha fatto perdere molto tempo, senza aver nessun risultato. Il mio obbiettivo è semplice, voglio che i file che creo nella mia applicazione vengano salvati nella SD esterna del telefono, se esiste, altrimenti salvarli nella memoria interna del telefono. Allora per quanto riguarda salvare file nella memoria interna (storage/emulated/0) riesco a farlo, il problema è andare a salvare nel path /storage/extSdCard che è la memoria esterna. Qualcuno può aiutarmi? Grazie mille anticipatamente e buona giornata!  :-)

Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:salvare file nella memoria esterna (SD)
« Risposta #1 il: 05 Agosto 2015, 10:22:22 CEST »
0
Il primo "problema" è che (per quel che ne so io) solo i samsung usano la dicitura "extSdCard" per la sd esterna.

Come principio puoi fare così:
1) verificare i percorsi disponibili con più chiamate a funzioni  di sistema:
Codice: [Seleziona]
String path1 = System.getenv("EXTERNAL_STORAGE");
String path2 = System.getenv("SECONDARY_STORAGE");
String path3 = System.getenv("EMULATED_STORAGE_TARGET");

2) verificare quale stringa non è nulla e aggiungerla a una lista/array, a.e.:
Codice: [Seleziona]
if (path1 != null) { //aggiungi alla lista }
3) poi scorrere la lista in modo da sapere quali percorsi disponibili ci sono per il salvataggio e decidere
Se la mia risposta ti è utile, per favore un thanks!

Offline supervanzo

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Tab 2
  • Sistema operativo:
    Windows
Re:salvare file nella memoria esterna (SD)
« Risposta #2 il: 05 Agosto 2015, 10:39:52 CEST »
0
Innanzitutto sappi che per scrivere e leggere la memoria esterna devi inserire i permessi di lettuta e scrittura sul manifest.xml:

Codice (XML): [Seleziona]
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Per determinare la cartella della sd Esterna basta che usi la classe Environment:

Codice (Java): [Seleziona]
File externalFolder = Environment.getExternalStorageDirectory();
Per quanto riguarda il controllo sulla memoria esterna io di solito uso questa piccola funzione:

Codice (Java): [Seleziona]
private boolean canReadFromExternalStorage() {
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            return true;
        } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            return true;
        } else {
            return false;
        }
    }

Ovviamente vanno applicate al tuo caso specifico, ma sono un buon inizio  :D

Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:salvare file nella memoria esterna (SD)
« Risposta #3 il: 05 Agosto 2015, 10:53:56 CEST »
0
Solo una precisazione alla risposta di supervanzo:
Environment.getExternalStorageDirectory(); restituisce un risultato diverso a seconda che sia montata o meno la SD card, quindi lo puoi usare tranquillamente se non è un fattore importante.

Spiego meglio, restituisce il path alla SD esterna se è presente, altrimenti restituisce il path alla sd emulata; quindi c'è la possibilità che i file vengano salvati in posti differenti.
Se la mia risposta ti è utile, per favore un thanks!

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:salvare file nella memoria esterna (SD)
« Risposta #4 il: 05 Agosto 2015, 15:58:58 CEST »
0
Grazie a @LonelyWolf e a @supervanzo i vostri consigli sono stati molto utili, ho risolto il problema attraverso la riga di codice
Codice: [Seleziona]
String path2 = System.getenv("SECONDARY_STORAGE");
GRAZIE!  8-) 8-)