2013-07-09 10 views
7

Ich möchte einige Dateien herunterladen und speichern Sie sie in den internen Speicher des Telefons/Registerkarte. Auf Samsung Galaxy Note 2 und Galaxt Tab 10.1 versucht. Wenn ich /storage/sdcard0/ auf ihnen verwende, wird der Code erfolgreich ausgeführt, aber wenn ich Galaxy Nexus 3 verwende, schlägt der Code fehl.Android erhalten externen Speicher Absolute Path

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

Ist es möglich, wenn ja wie?

+0

Diese Frage ist ziemlich verwirrt zwischen intern/extern, also ** bitte schlagen Sie es nie als ein Duplikat für irgendetwas vor **. –

Antwort

25

Wenn ich/storage/sdcard0/auf ihnen läuft der Code erfolgreich, aber wenn ich Galaxy Nexus 3 der Code nicht verwendet werden.

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

(BTW, da kein Gerät „Galaxy Nexus 3“ genannt ist, gehe ich davon aus, dass man einfach „Galaxy Nexus“ gemeint)

Um Positionen auf interne Speicher für Ihre Anwendung zu finden, verwenden getFilesDir(), rief auf jedem Context (wie Ihr Activity, ein File Objekt zu erhalten.

um Ihre App einen Ort auf externen Speicher einzigartig zu erhalten, verwenden getExternalFilesDir(), rief jeder Context (wie Ihr Activity, eine bekommen File Objekt.

Um einen Standard Standort auf externen Speicher für häufige Arten von Dateien (zum Beispiel Filme) zu erhalten, verwenden getExternalStoragePublicDirectory() auf Environment.

Um die Wurzel von externen Lagerung zu erhalten, verwenden getExternalStorageDirectory() auf Environment. Dies wird jedoch heutzutage als schlampige Programmierung angesehen, da Entwickler dadurch ermutigt werden, Dateien einfach an zufälligen Orten zu platzieren.

+0

Ich bin neu auf Android-Programmierung. Ich speichere Dateien im Speicher.Wenn ich zum Beispiel auf meinem Galaxy Note 2/storage/sdcard0/sehe ich Whatssapp, Musik, Alarm etw. Wie bekomme ich/storage/sdcard0/Pfad für alle Telefone/Tabs. Vielen Dank. –

+2

@ ErdinçÖzdemir: Verwenden Sie 'getExternalStorageDirectory()' auf 'Environment'. Dies wird jedoch heutzutage als schlampige Programmierung angesehen, da Entwickler dadurch ermutigt werden, Dateien einfach an zufälligen Orten zu platzieren. Auch der * spezifische * Pfad, der externen Speicher darstellt, variiert je nach Hersteller und Betriebssystemversion. Aus diesem Grund verwenden Sie Methoden anstelle von fest codierten Zeichenfolgen, um Speicherorte auf externem Speicher zu finden. – CommonsWare

+0

@CommonsWare: Ich habe internen Speicher auf meinem LG Optimus Gerät und es zeigt internen Speicher auf **/Speicher/SDCard0/**, ich habe es über Dateimanager überprüft .... so ist es etwas verwirrend, ob sdcard0 auf interne oder externe zeigen – Shashank

7

Warum können Sie nicht Environment.getExternalStorageDirectory() für /storage/sdcard0/ Pfad aus Code verwenden?

Notwendigkeit Berechtigungen hinzuzufügen als auch

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

Die gefundene Lösung ist 1. Bearbeiten der Emulator:

  1. Go Virtual Device Manager auf Android und bearbeiten Sie dann den Emulator
  2. Set sagen 100 MB für SD d Karte für den angesehenen Emulator, sagen Ok
  3. Speichern und schließen Emulator und starten

Es ist für mich gearbeitet, ist die App nicht mehr einen Fehler geben und funktioniert gut.

Verwandte Themen