首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 9无法在Android外部公共路径内创建目录(“storage/emulated/0/MyImages”)

Android 9无法在Android外部公共路径内创建目录("storage/emulated/0/MyImages")的原因是由于Android 9引入了更严格的文件系统权限控制机制。为了增强用户数据的安全性,Android 9限制了应用程序对外部存储的访问权限。

在Android 9及更高版本中,应用程序默认只能访问其私有目录,而无法直接在外部公共路径中创建目录。这意味着无法直接在"storage/emulated/0/MyImages"路径下创建目录。

然而,Android提供了一种新的机制来允许应用程序在外部存储中进行文件操作,即通过使用Storage Access Framework(存储访问框架)。通过这种机制,用户可以选择授权应用程序访问外部存储,并且应用程序可以在用户选择的目录中创建文件或目录。

要在Android 9中在外部公共路径内创建目录,可以按照以下步骤进行操作:

  1. 使用Intent调用存储访问框架:
代码语言:txt
复制
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE);
  1. 在onActivityResult方法中处理返回的URI:
代码语言:txt
复制
@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");
    }
}
  1. 创建目录:
代码语言:txt
复制
private void createDirectory(DocumentFile parentDir, String dirName) {
    DocumentFile newDir = parentDir.createDirectory(dirName);
    if (newDir != null) {
        // 目录创建成功
    } else {
        // 目录创建失败
    }
}

通过以上步骤,用户将被要求选择一个目录来授权应用程序访问外部存储,并且应用程序将在用户选择的目录中创建名为"MyImages"的目录。

需要注意的是,由于Android设备的不同,存储访问框架的使用可能会有所差异。此外,由于本回答要求不能提及云计算品牌商,因此无法提供腾讯云相关产品的链接。但是,腾讯云提供了丰富的云计算服务,可以在其官方网站上查找相关产品和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券