访问 Samsung Galaxy S7 Micro SD 卡的根目录
Access the root for Samsungs Galaxy S7 Micro SD Card
我在 Samsung Galaxy S7 上访问 SD 卡时遇到问题。
我在清单中添加了权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我尝试访问sd卡的是获取绝对路径:
Environment.getExternalStorageDirectory().getAbsolutePath()
它告诉我路径:/storage/emulated/0
但是用这个路径,我无法访问我在sd卡上的文件。
我也尝试了不同的答案,包括 "external_sd"、"sdcard"、使用 "sdcard0"、"sdcard1",但对我来说没有任何效果。
然后我尝试遍历 /storage/
中的文件夹
File dir = new File("/storage/");
ArrayList<String> fileNames = new ArrayList<String>();
for (File f : dir.listFiles()) {
if (f.isDirectory()){
fileNames.add(f.getName());
}
}
Log.d("file", fileNames.toString());
日志显示
[3333-3733, emulated, enc_emulated, self]
我发现,我要访问的文件在文件夹 3333-3733 中。
那么sd卡的正确访问方式是什么?
所以最后我使用了函数
public File getExternalSdCard() {
File externalStorage = null;
File storage = new File("/storage");
if(storage.exists()) {
File[] files = storage.listFiles();
for (File file : files) {
if (file.exists()) {
try {
if (Environment.isExternalStorageRemovable(file)) {
externalStorage = file;
break;
}
} catch (Exception e) {
Log.e("TAG", e.toString());
}
}
}
}
return externalStorage;
}
获取我的 SD 卡。
这很伤心。
我在 Samsung Galaxy S7 上访问 SD 卡时遇到问题。
我在清单中添加了权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我尝试访问sd卡的是获取绝对路径:
Environment.getExternalStorageDirectory().getAbsolutePath()
它告诉我路径:/storage/emulated/0
但是用这个路径,我无法访问我在sd卡上的文件。
我也尝试了不同的答案,包括 "external_sd"、"sdcard"、使用 "sdcard0"、"sdcard1",但对我来说没有任何效果。
然后我尝试遍历 /storage/
中的文件夹 File dir = new File("/storage/");
ArrayList<String> fileNames = new ArrayList<String>();
for (File f : dir.listFiles()) {
if (f.isDirectory()){
fileNames.add(f.getName());
}
}
Log.d("file", fileNames.toString());
日志显示
[3333-3733, emulated, enc_emulated, self]
我发现,我要访问的文件在文件夹 3333-3733 中。
那么sd卡的正确访问方式是什么?
所以最后我使用了函数
public File getExternalSdCard() {
File externalStorage = null;
File storage = new File("/storage");
if(storage.exists()) {
File[] files = storage.listFiles();
for (File file : files) {
if (file.exists()) {
try {
if (Environment.isExternalStorageRemovable(file)) {
externalStorage = file;
break;
}
} catch (Exception e) {
Log.e("TAG", e.toString());
}
}
}
}
return externalStorage;
}
获取我的 SD 卡。
这很伤心。