gpt4 book ai didi

Android - 范围目录访问 - 访问不存在的文件夹

转载 作者:行者123 更新时间:2023-11-30 00:21:18 25 4
gpt4 key购买 nike

我提到了this指导。

我想在 SD 卡的根目录下创建一个名为“XYZ”的文件夹。因此考虑以下代码:(内部或外部 SD 卡上不存在 XYZ 文件夹)

    private void aaskForAppyStoreFolderPermission(){
if(FWCompat.isNougat_24_OrNewer()){
StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
File f = new File("/XYZ");
StorageVolume extStorage = sm.getStorageVolume(f);
if(extStorage != null) {
Intent intent = extStorage.createAccessIntent(null);
startActivityForResult(intent, 100);
}
}
}

但这不会显示任何用于访问 XYZ 文件夹的弹出窗口。现在,即使我手动创建文件夹并使用“/XYZ”或“/storage/emulated/0”或“/storage/459-C045/XYZ”路径重试。还是不行。

但是,如果我尝试访问整个外部存储卡:如下所示,它会显示弹出窗口,但消息显示您是否希望授予访问完整 SD 卡的权限(这是正确的,但不是我需要的。因为我只想访问一个特定文件夹(可能存在也可能不存在))访问整个存储卡的代码:

    private void askForAppyStoreFolderPermission(){
if(FWCompat.isNougat_24_OrNewer()){
StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
List<StorageVolume> volumeList = sm.getStorageVolumes();
if(volumeList != null && volumeList.size() > 0){
StorageVolume extStorage = volumeList.get(volumeList.size() - 1);
if(extStorage != null) {
Intent intent = extStorage.createAccessIntent(null);
startActivityForResult(intent, 100);
}
}
}
}

最佳答案

Here它显示了您可以访问哪些目录:

  • DIRECTORY_ALARMS
  • DIRECTORY_DCIM
  • DIRECTORY_DOCUMENTS
  • DIRECTORY_DOWNLOADS
  • DIRECTORY_MOVIES
  • DIRECTORY_MUSIC
  • DIRECTORY_NOTIFICATIONS
  • DIRECTORY_PICTURES
  • DIRECTORY_PODCASTS
  • DIRECTORY_RINGTONES

我想做你尝试做的同样的事情(读/写到根目录下的一个文件夹,如果它不存在则创建),不幸的是它要么是其中之一,要么是 SD 卡的根目录(有createAccessIntent(null)).

然后您可以从那里搜索树以查看您的文件夹是否存在,如果不存在,则通过执行以下操作直接在根目录中创建它:

Uri u = myintent.getData(); //pass this in onActivityResult(...)!
DocumentFile wholeSD = DocumentFile.fromTreeUri(myContext,u);
DocumentFile myFolder = wholeSD.findFile("myfolder");

if(myFolder.exists()) {
if(myFolder.isDirectory()) {
doStuff();
}
} else {
wholeSD.createDirectory("myFolder");
}

您也可以尝试获取 SD 卡的实际路径(请参阅我在 this 问题中的回答)但不能保证它适用于每部手机,而且您只能获得读取权限 - 只要您尝试像在普通外部存储(不可移动/内置)中那样写一些东西,它可能会给你一个“无法访问”的异常。

关于Android - 范围目录访问 - 访问不存在的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46216483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com