2013-07-09 12 views
7

Desidero scaricare alcuni file e salvarli nella memoria interna del telefono/scheda. Provato su Samsung Galaxy Note 2 e Galaxt Tab 10.1. Quando utilizzo il codice /storage/sdcard0/ su di essi, il codice viene eseguito correttamente ma quando utilizzo il codice Galaxy Nexus 3 il codice non funziona.Android per l'archiviazione esterna Percorso assoluto

Desidero ottenere il percorso assoluto dell'archivio interno del phoe o della scheda 'Absolute Path.

Possibile, se sì, come?

+0

Questa domanda è abbastanza confusa tra interno/esterno, quindi ** si prega di non proporlo mai come duplicato per qualsiasi cosa **. –

risposta

25

Quando uso/stoccaggio/sdcard0/su di loro il codice viene eseguito con successo ma quando uso Galaxy Nexus 3 del codice non riesce.

/storage/sdcard0/ non è una memoria interna. È una memoria esterna.

(a proposito, poiché non v'è nessun dispositivo chiamato "Galaxy Nexus 3", io parto dal presupposto che si intende semplicemente "Galaxy Nexus")

per trovare le posizioni su interna archiviazione per la vostra applicazione, utilizzare getFilesDir(), chiamato su qualsiasi Context (come il tuo Activity, per ottenere un oggetto File.

per ottenere una posizione sul esterna archiviazione unica per la vostra applicazione, utilizzare getExternalFilesDir(), ha invitato tutte le Context (come il tuo Activity, per ottenere un File oggetto.

Per ottenere una posizione serie su esterna archiviazione per comuni tipi di file (ad esempio, film), utilizzare getExternalStoragePublicDirectory() su Environment.

Per ottenere radice di esterna stoccaggio, utilizzare getExternalStorageDirectory() su Environment. Questo, tuttavia, è considerato una programmazione sciatta al giorno d'oggi, in quanto incoraggia gli sviluppatori a inserire file in posizioni casuali.

+0

Sono nuovo nella programmazione Android. Salvo i file nello spazio di archiviazione.Ad esempio, quando guardo il mio Galaxy Note 2/storage/sdcard0/vedo Whatssapp, Music, Alarm sth .. Come posso ottenere/storage/sdcard0/path per tutti i telefoni/schede. Grazie. –

+2

@ ErdinçÖzdemir: usa 'getExternalStorageDirectory()' su 'Ambiente'. Questo, tuttavia, è considerato una programmazione sciatta al giorno d'oggi, in quanto incoraggia gli sviluppatori a inserire file in posizioni casuali. Inoltre, il percorso * specifico * che rappresenta la memoria esterna varia a seconda del produttore e della versione del sistema operativo. Ecco perché si utilizzano metodi, piuttosto che stringhe codificate, per trovare posizioni sull'archivio esterno. – CommonsWare

+0

@CommonsWare: ho una memoria interna sul mio dispositivo LG Optimus e punta la memoria interna a **/storage/sdcard0/**, l'ho controllato tramite il file manager .... quindi confondeva se sdcard0 puntava a interni o esterni – Shashank

7

perché non è possibile utilizzare Environment.getExternalStorageDirectory() per ottenere il percorso /storage/sdcard0/ dal codice?

necessità di aggiungere le autorizzazioni così

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
1

La soluzione trovata è prima modificare l'emulatore:

  1. Vai a Android virtuale Gestione periferiche e quindi modificare l'emulatore
  2. Set dicono 100 MB per scheda SD d per l'emulatore rispettato, dicono Ok
  3. Salva e chiudi emulatore e iniziare

Ha funzionato per me, l'applicazione non è più dando un errore e sta lavorando bene.

Problemi correlati