Android erhält externen Speicher Absoluter Pfad

7

Ich möchte einige Dateien herunterladen und sie im internen Speicher des Telefons / Tab speichern. Auf Samsung Galaxy Note 2 und Galaxt Tab 10.1 versucht. Wenn ich /storage/sdcard0/ für sie verwende, wird der Code erfolgreich ausgeführt, aber wenn ich Galaxy Nexus 3 verwende, schlägt der Code fehl.

Ich möchte den absoluten Pfad des internen Speichers des Phio oder Tabs ' Absolute Path ' erhalten.

Ist es möglich, wenn ja wie?

    
Erdinç Özdemir 09.07.2013, 11:10
quelle

3 Antworten

25
  

Wenn ich / storage / sdcard0 / darauf verwende, läuft der Code erfolgreich, aber wenn ich Galaxy Nexus 3 benutze, schlägt der Code fehl.

/storage/sdcard0/ ist kein interner Speicher. Es ist externer Speicher.

(Da es kein Gerät namens "Galaxy Nexus 3" gibt, nehme ich an, dass du einfach "Galaxy Nexus" meintest)

Um nach Orten auf internem Speicher für Ihre App zu suchen, verwenden Sie getFilesDir() , aufgerufen für Context (z. B. Activity , um ein File -Objekt zu erhalten.

Um einen Speicherort auf externem Speicher zu erhalten, der für Ihre App einzigartig ist, verwenden Sie getExternalFilesDir() , aufgerufen für Context (z. B. Activity , um ein File Objekt zu erhalten.

Um einen Standard Speicherort für externe Speicher für gängige Dateitypen (z. B. Filme) zu erhalten, verwenden Sie getExternalStoragePublicDirectory() für Environment .

Um den Stamm von externem Speicher zu erhalten, verwenden Sie getExternalStorageDirectory() für Environment . Dies wird jedoch heutzutage als schlampige Programmierung angesehen, da Entwickler dadurch ermutigt werden, Dateien einfach an zufällige Orte zu stellen.

    
CommonsWare 09.07.2013, 11:16
quelle
8

Warum können Sie Environment.getExternalStorageDirectory() nicht verwenden, um /storage/sdcard0/ path vom Code zu erhalten?

muss auch Berechtigungen hinzufügen

%Vor%     
Desu 09.07.2013 11:15
quelle
1

Die gefundene Lösung ist 1. Bearbeiten Sie den Emulator:

  1. Gehe zum Android Virtual Device Manager und bearbeite den Emulator
  2. Sagen Sie 100 MB für SD d-Karte für den angesehenen Emulator, sagen Sie Ok
  3. Speichere und schließe den Emulator und starte

Es hat für mich funktioniert, die App gibt keinen Fehler mehr und funktioniert gut.

    
madmaskd 16.03.2014 08:20
quelle

Tags und Links