gpt4 book ai didi

java - 更新到 Oreo 后 ListFile 为空

转载 作者:太空狗 更新时间:2023-10-29 14:39:18 26 4
gpt4 key购买 nike

我的 mibox 4k 更新到 android Oreo 后应用程序无法运行

代码查找外部存储

    private String[] getUsbStoragePaths()
{
List<String> result = new ArrayList<>();
File storageDir = new File("/storage");
if(storageDir.isDirectory()) {
File[] subDir = storageDir.listFiles();
for(File dir : subDir) {
if(dir.canRead()) {
result.add(dir.getAbsolutePath());
}
}
}

return result.toArray(new String[0]);
}


private List<File> getSubDirs(String path) {
List<File> result = new ArrayList<>();
File root = new File(path);
if (root.exists() && root.canRead()) {
File[] subDirs = root.listFiles(); ->>>>>> alway null

if (subDirs !=null)
{
for(File dir: subDirs)
{
if (dir.isDirectory() && dir.canRead())
{
result.add(dir);
}
}
}
}

return result;
}

我的U盘有子文件夹

----子目录1
----子目录2
----SubDir3
----文件1

应用中的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

并在运行时请求权限

private void requestStoragePermission() {
if (!hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) ||
!hasPermission(, Manifest.permission.READ_EXTERNAL_STORAGE)) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
}
private boolean hasPermission(final String permission) {
return PackageManager.PERMISSION_GRANTED == getApplicationContext().getPackageManager().checkPermission(
permission, getApplicationContext().getPackageName());
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Other things
requestStoragePermission();
}

getSubDirs 方法的结果为空,文件[] subDirs = root.listFiles(); ->>>>>> 始终为空

最佳答案

This code will give you files which are stored inside directory.

String pattern = ".png";
File directory = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "Your directory name");
File[] fileList = directory.listFiles();
if (fileList != null && fileList.length > 0) {

for (File file : fileList) {
//if you need particular file format than check with that otherwise remove it.
if (file.isFile() && file.getName().endsWith(pattern)) {
//
}
}
}

关于java - 更新到 Oreo 后 ListFile 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51097793/

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