我是android开发的新手,我在阅读java中的getExternalStorageDirectory时遇到了一些问题,我已经读过https://developer.android.com/reference/android/os/Environment,但听不懂,有人可以帮我提供Java示例代码。
答案 0 :(得分:1)
从文档中您可以看到:
getExternalStoragePublicDirectory(String type)
在API级别29中不赞成使用此方法。为了提高用户隐私,不建议直接访问共享/外部存储设备。什么时候 一个应用程序定位到Build.VERSION_CODES.Q,由此返回的路径 方法不再可供应用直接访问。应用程序可以继续 通过迁移到来访问共享/外部存储上存储的内容 其他选择,例如 Context#getExternalFilesDir(String), MediaStore或Intent#ACTION_OPEN_DOCUMENT。
不传递任何参数作为此函数的参数,以将目录作为File
对象:
Context.getExternalFilesDir();
此处“上下文”是由this.getContext();
this
是活动的当前对象。使用时请仔细检查示波器。
重要
要访问内部存储,文件AndroidManifest.xml中需要Manifest.permission.WRITE_EXTERNAL_STORAGE
和/或Manifest.permission.READ_EXTERNAL_STORAGE
。
可选信息:
答案 1 :(得分:1)
使用getExternalFilesDir()
,getExternalCacheDir()
或getExternalMediaDirs()
(有关上下文的方法)而不是Environment.getExternalStorageDirectory()
String root = mContext.getExternalFilesDir(null).getAbsolutePath();
File myDir = new File(root + "/" + mContext.getResources().getString(R.string.app_name) + "_share");
myDir.mkdirs();
答案 2 :(得分:0)
简短回答:
String path = getContext().getExternalFilesDir(null).getAbsolutePath();
答案 3 :(得分:0)
使用此静态方法。 目前,我找不到任何合法的方式来做到这一点。 因此,使我成为了获取根目录或getAbsolutePath文件路径的静态方法。
public static File getAbsoluteDir(Context ctx, String optionalPath) {
String rootPath;
if (optionalPath != null && !optionalPath.equals("")) {
rootPath = ctx.getExternalFilesDir(optionalPath).getAbsolutePath();
} else {
rootPath = ctx.getExternalFilesDir(null).getAbsolutePath();
}
// extraPortion is extra part of file path
String extraPortion = "Android/data/" + BuildConfig.APPLICATION_ID
+ File.separator + "files" + File.separator;
// Remove extraPortion
rootPath = rootPath.replace(extraPortion, "");
return new File(rootPath);
}