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?
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();
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.
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!";
}