We usually get external storage path by API - 'Environment.getExternalStorageDirectory();' .
Sometimes, the API apply a internal storage that means it's emulated external storage.
So I find a way to get real external storage on the Internet, the full code is following:
/**
* Get real external storage path.
* @return Real external storage path or null for no external storage.
*/
private static String getSdcardPath(){
File file = new File("/system/etc/vold.fstab");
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(file);
if (fr != null) {
br = new BufferedReader(fr);
String s = br.readLine();
while (s != null) {
if (s.startsWith("dev_mount")) {
String[] tokens = s.split("\\s");
String path = tokens[2]; //mount_point
br.close();
fr.close();
return path;
}
s = br.readLine();
}
br.close();
fr.close();
}//if (fr != null)
}
catch (FileNotFoundException e) {}
catch (IOException e) {}
return null;
}
If you want to read file from external storage, remember to add user-permission "android.permission.READ_EXTERNAL_STORAGE".For writing file, adding user-permission "android.permission.WRITE_EXTERNAL_STORAGE".
If you add "android.permission.WRITE_EXTERNAL_STORAGE", it explicitly add "android.permission.READ_EXTERNAL_STORAGE".
沒有留言 :
張貼留言