Java ListFile在更新到Oreo后为空
在我的mibox 4k更新到android Oreo后,该应用程序无法运行 外部存储器的代码查找Java ListFile在更新到Oreo后为空,java,android,file,android-tv,Java,Android,File,Android Tv,在我的mibox 4k更新到android Oreo后,该应用程序无法运行 外部存储器的代码查找 private String[] getUsbStoragePaths() { List<String> result = new ArrayList<>(); File storageDir = new File("/storage"); if(storageDir.isDirectory()) { File[] subDi
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;
}
getSubDirs方法的结果为空,
File[]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)) {
//
}
}
}
将目标从25改为26
但无法支持unicode名称文件[]subDirs=root.listFiles();->>>总是空的。”listFiles'返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。如果此抽象路径名不表示目录,则此方法返回null。这个根文件不是我想的目录,请看一下。1.2. @Ankita-user3449434此根文件为目录,路径为“/storage/16 digit”,它适用于getSubDirs(“/storage/emulated/0/”),但不适用于getSubDirs(“/storage/39EB…./”)。Android Oreo在Mibox 4k设备上有许多错误。现在它的状态已更改为beta
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();
}
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)) {
//
}
}
}