是否有一个简单的 API 调用可以告诉我在 Android 10 或更高版本上运行的应用程序是否必须使用 Scoped Storage 访问权限,也就是说,是否禁用了正常的文件访问权限,即“旧版外部存储”?请注意,即使应用程序在 AndroidManifest.xml 部分声明:
android:requestLegacyExternalStorage="true"
由于未来谷歌政策的变化,文件访问仍然可能被拒绝,所以测试这个值是没有用的。我发现的唯一方法是测试外部存储根目录是否可读,但为此,应用程序必须首先请求存储权限,如果禁用旧版存储,这对其他任何事情都无用。
public static boolean mustUseScopedStorage() {
// Impractical must first ask for useless Storage permission...
File exSD = Environment.getExternalStorageDirectory();
return !exSD.canRead(); // this test works only if Storage permission was granted.
}
我想我曾经看过一个新的 API 来检测这一点,但再也找不到那篇文章了……