web-dev-qa-db-de.com

Android So verwenden Sie Environment.getExternalStorageDirectory ()

Wie kann ich Environment.getExternalStorageDirectory() verwenden, um ein gespeichertes Bild von der SD-Karte zu lesen, oder gibt es eine bessere Möglichkeit, dies zu tun?

49
Moe
Environment.getExternalStorageDirectory().getAbsolutePath()

Gibt Ihnen den vollständigen Pfad der SD-Karte. Sie können dann normale Datei-E/A-Vorgänge mit Standard-Java ausführen.

Hier ist ein einfaches Beispiel zum Schreiben einer Datei:

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";

// Not sure if the / is on the path or not
File f = new File(baseDir + File.separator + fileName);
f.write(...);
f.flush();
f.close();

Bearbeiten:

Hoppla - Sie wollten ein Beispiel zum Lesen ...

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";

// Not sure if the / is on the path or not
File f = new File(baseDir + File.Separator + fileName);
FileInputStream fiStream = new FileInputStream(f);

byte[] bytes;

// You might not get the whole file, lookup File I/O examples for Java
fiStream.read(bytes); 
fiStream.close();
78
debracey

Bedenken Sie jedoch, dass getExternalStorageDirectory () auf einigen Telefonen nicht ordnungsgemäß funktioniert, z. mein Motorola razr maxx, da es 2 Karten/mnt/sdcard und/mnt/sdcard-ext hat - für interne und externe SD-Karten respektvoll. Sie erhalten immer nur die Antwort/mnt/sdcard. Google muss einen Weg finden, mit einer solchen Situation umzugehen. Da auf diesem Telefon viele SD-Karten-fähige Apps (d. H. Kartensicherung) fehlerhaft ausfallen.

35
halxinate

Wie beschrieben in Dokumentation Environment.getExternalStorageDirectory () :

Environment.getExternalStorageDirectory () Gibt das primäre .__ zurück. freigegebenes/externes Speicherverzeichnis.

Dies ist ein Beispiel für die Verwendung eines Bilds:

String fileName = "stored_image.jpg";
 String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
 String pathDir = baseDir + "/Android/data/com.mypackage.myapplication/";

 File f = new File(pathDir + File.separator + fileName);

        if(f.exists()){
          Log.d("Application", "The file " + file.getName() + " exists!";
         }else{
          Log.d("Application", "The file no longer exists!";
         }
0
Elenasys