我有一个照片编辑安卓应用,用户可以选择结果照片的输出目录。问题是谷歌在KITKAT(安卓系统版本)中更改了SD卡写入权限,安卓KITKAT版本的设备不允许应用程序写入次级SD卡。现在,我需要检查用户选择的目录是否已授予权限并且不会抛出EACCES错误。我已经检查了canRead和canWrite,但这些都没有帮助。请告诉我如何检查所选目录是否不会引发EACCES。我的唯一解决方案是尝试在try catch中写入文件,但我希望有更好的方法。
[更新k3b 2016-09-19]
我在我的安卓4.4上尝试过这个方法,但没有成功。
Uri uri = Uri.fromFile(file);
int permissionCode =
context.checkCallingOrSelfUriPermission(uri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
if (permissionCode == PackageManager.PERMISSION_DENIED) {
// on my android-4.4 i always get PERMISSION_DENIED even
// if i can overwrite the file
return false;
}