请在将此帖子下投票或标记为重复之前阅读整个帖子!
我正在开发一款应用程序,它从用户手机中的特定文件夹读取文件 - 无论是从SD卡(如果有)还是从内置存储器中。是的,在清单中提到了“READ_EXTERNAL_STORAGE”,我也处理了API>23的权限弹出窗口。
我以前只是使用
我正在开发一款应用程序,它从用户手机中的特定文件夹读取文件 - 无论是从SD卡(如果有)还是从内置存储器中。是的,在清单中提到了“READ_EXTERNAL_STORAGE”,我也处理了API>23的权限弹出窗口。
我以前只是使用
File folder = new File(Environment.getExternalStorageDirectory(), "myfolder");
获取存储在内置存储器(S7的32GB)中的文件夹路径,现在我想获取SD卡的路径。根据谷歌给出的几乎所有结果,“Environment.getExternalStorageDirectory()”应该会给你SD卡的路径,但对我来说并没有(从来都没有过)。
我已经在两台不同的三星Galaxy S7上进行了测试,都运行着Android 7.0,一台带有SD卡(+文件夹),另一台没有(+文件夹):
Log.d(tag, System.getenv("EXTERNAL_STORAGE"));
Log.d(tag, System.getenv("SECONDARY_STORAGE"));
Log.d(tag, ""+new File(System.getenv("EXTERNAL_STORAGE")+File.separator+"myfolder").isDirectory());
Log.e(tag, ""+new File(System.getenv("EXTERNAL_STORAGE")+File.separator+ordner).getAbsolutePath());
Log.d(tag, Environment.isExternalStorageRemovable());
Log.d(tag, Environment.getExternalStorageDirectory());
Log.d(tag, Environment.getExternalStorageDirectory().getAbsolutePath());
让我惊讶的是,两部手机输出了相同的信息:
/sdcard
null
true
/sdcard/myfolder
false
/storage/emulated/0
/storage/emulated/0
根据文件管理器应用程序 ("我的文件"), 内置存储被称为 "内部存储", 这甚至更加不合理 (我知道Android中内部存储和外部存储之间的区别)。
我如何获取实际SD卡的路径(无需硬编码)?
Environment.getExternalStorageDirectory()
函数。一直跟随父文件夹,直到找到/sdcard/
。 - FindOutIslamNow