我想打开外部存储目录路径以编程方式保存文件.我试过但没有获得SD卡路径.我怎么能这样做?有什么解决方案吗?
private File path = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "");
Run Code Online (Sandbox Code Playgroud)
要么
private File path = new File(Environment.getExternalStorageDirectory() + "");
Run Code Online (Sandbox Code Playgroud)
我尝试从两个方法上面获取路径,但两者都指向内部存储器.
当我们打开存储器时,如果sdcard没有,它将显示如下 -

设备存储和SD存储卡.
我想通过编码获得sd内存路径.我已经在清单中给予了许可 -
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud) 在我的启动画面中,我想检查手机是否有SD卡.布尔语句位于:
Boolean isSDPresent = android.os.Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED );
Run Code Online (Sandbox Code Playgroud)
所以,如果我的手机插槽中有SDCard,这个布尔值将返回true,到目前为止一直很好.当我从设置菜单转到"卸载SDCard"并删除SDCard,然后杀死应用程序并再次启动它时,布尔值也将为真.
如果我启动Astro File Manager后卸载并删除SD卡,我仍然可以访问/mnt/sdcard路径,为什么?
我怎样才能做到这一点?
提前致谢!
编辑
使用以下代码进行测试:
File path = Environment.getExternalStorageDirectory();
String pathS = path.getPath();
Run Code Online (Sandbox Code Playgroud)
当SDCard在插槽中时,pathS包含mnt/sdcard,但当我删除SDCard时pathS仍然是/mnt/sdcard......