Android 9无法在Android外部公共路径内创建目录("storage/emulated/0/MyImages")的原因是由于Android 9引入了更严格的文件系统权限控制机制。为了增强用户数据的安全性,Android 9限制了应用程序对外部存储的访问权限。
在Android 9及更高版本中,应用程序默认只能访问其私有目录,而无法直接在外部公共路径中创建目录。这意味着无法直接在"storage/emulated/0/MyImages"路径下创建目录。
然而,Android提供了一种新的机制来允许应用程序在外部存储中进行文件操作,即通过使用Storage Access Framework(存储访问框架)。通过这种机制,用户可以选择授权应用程序访问外部存储,并且应用程序可以在用户选择的目录中创建文件或目录。
要在Android 9中在外部公共路径内创建目录,可以按照以下步骤进行操作:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
Uri treeUri = data.getData();
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
createDirectory(pickedDir, "MyImages");
}
}
private void createDirectory(DocumentFile parentDir, String dirName) {
DocumentFile newDir = parentDir.createDirectory(dirName);
if (newDir != null) {
// 目录创建成功
} else {
// 目录创建失败
}
}
通过以上步骤,用户将被要求选择一个目录来授权应用程序访问外部存储,并且应用程序将在用户选择的目录中创建名为"MyImages"的目录。
需要注意的是,由于Android设备的不同,存储访问框架的使用可能会有所差异。此外,由于本回答要求不能提及云计算品牌商,因此无法提供腾讯云相关产品的链接。但是,腾讯云提供了丰富的云计算服务,可以在其官方网站上查找相关产品和文档。
领取专属 10元无门槛券
手把手带您无忧上云