我在SD卡上创建目录时遇到问题。
AndroidManifest.xml 包含必要的权限:
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<a href="#"><i class="fa fa-facebook"></i></a>
<a href="#"><i class="fa fa-twitter"></i></a>
<a href="#"> <i class="fa fa-google"></i>
</a>
对于Android 6.0,我在运行时询问这些权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application...
等待结果:
int permissionCheck1 = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
int permissionCheck2 = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck1 != PackageManager.PERMISSION_GRANTED || permissionCheck2 != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_READWRITE_STORAGE);
} else {
init();
}
我的应用程序确定了两个可用存储:
内部 - / storage / emulated / 0
和外部(可移动SD卡) - / storage / 6052-CD5B
我使用
创建文件夹@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_READWRITE_STORAGE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
init();
} else {
Toast toast = Toast.makeText(this, "Read / Write storage permissions required", Toast.LENGTH_SHORT);
toast.show();
}
break;
default:
break;
}
}
结果:
我可以在 / storage / emulated / 0 中创建文件夹。
我可以在 / storage / 6052-CD5B / Android / data / myapp (这是我的应用程序文件夹)中创建文件夹。
但我无法在我的应用程序文件夹外的 / storage / 6052-CD5B 中创建文件夹,例如图像文件夹 / storage / 6052-CD5B / DCIM 。
似乎授予的权限只允许我访问特定于应用程序的文件夹。是这样吗?如果没有,我怎样才能最终获得对其他SD卡文件夹的写入权限?