Autore Topic: Memoria esterna  (Letto 399 volte)

Offline array81

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
    • MartinZone
  • Dispositivo Android:
    OnePlus One, Nexus S
  • Play Store ID:
    MartinZone
  • Sistema operativo:
    Windows 7
Memoria esterna
« il: 04 Maggio 2016, 00:45:26 CEST »
0
Sto diventando matto nel tentativo di capire come individuare la root della memoria esterna.
Mi spiego, ho 2 terminali, un vecchio Samsung Nexus S e un OnePlus One, sono entrambi privi di alloggiamento SD. Se non ho capito male la memoria interna dovrebbe essere la porzione di memoria dove stanno Android e le app mentre quella esterna la porzione accessibile tramite usb quando collego i dispositivi al PC.
Ho capito male?

Io sto cercando di salvare un file di log nella memoria esterna, con questo codice:
Codice (Java): [Seleziona]
                fw = new FileWriter(new File(
                        Environment.getExternalStorageDirectory().toString() + "/" + APP + ".log"),
                        true);

La cosa funziona sul Nexus S ma non sullo One dove ottengo il seguente errore: java.io.FileNotFoundException: /storage/emulated/0/Smart_Sensors.log: open failed: EACCES (Permission denied)

Qualcuno mi potrebbe spiegare come ottenere universalmente la root della memoria interna, di quella esterna e se disponibile della sd?

Ho cercato in lungo e in largo ma trovo codice che a volte funziona su un terminale a volte su l'altro mai qualcosa di "universale", eppure dovrebbe essere abbastanza semplice data l'importanza della funzione.

Offline iClaude

  • Utente normale
  • ***
  • Post: 221
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 10
Re:Memoria esterna
« Risposta #1 il: 04 Maggio 2016, 08:54:29 CEST »
0
La distinzione tra memoria interna ed esterna non è fisica, ma virtuale: ci sono dispositivi che hanno solo la memoria incorporata, ma che dividono questa virtualmente questa in memoria interna ed esterna.
Però non tutti i dispositivi hanno la memoria esterna, quindi bisogna sempre verificare che esista prima di eseguire operazioni. I metodi per ottenere il path della memoria esterna sono getExternalFilesDir per i file privati e getExternalStoragePublicDirectory per quelli pubblici.
Ti consiglio inoltre di non costruire i path a mano, ma di usare i costruttori della classe File.
Qua la guida completa:
Saving Files | Android Developers