我想在手机中获取所有文件的PDF。但是当我使用代码时,new File(Environment.getExternalStorageDirectory((.toString(((.listFiles((返回null。我正在使用targetSDK 31我的代码
File dir = new File(Environment.getExternalStorageDirectory().toString());
getfile(dir);
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if(listFile==null){
Log.d("kdkkdd","day");
}
// Log.d("kkdkd",listFile.length+"");
if (listFile != null && listFile.length > 0) {
Log.d("ssksks",listFile.length+"");
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
Log.d("kkdkkd",listFile[i].getName());
getfile(listFile[i]);
} else {
boolean booleanpdf = false;
if (listFile[i].getName().endsWith(".pdf")) {
for (int j = 0; j < fileList.size(); j++) {
if (fileList.get(j).getName().equals(listFile[i].getName())) {
booleanpdf = true;
} else {
}
}
if (booleanpdf) {
booleanpdf = false;
} else {
fileList.add(listFile[i]);
}
}
}
}
}
Log.d("kdkdkkd",fileList.size()+"");
return fileList;
}
什么解决方案可以修复???如何在手机中获取所有PDF文件???
您有特定存储权限吗?对于targetSDK 31,您必须具有MANAGE_EXTERNAL_STORAGE权限才能获取PDF列表。
获取PDF 所需的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
然后在您的清单中->应用程序标签选择退出范围存储在安卓10设备
android:requestLegacyExternalStorage="true"
在运行时从用户获取存储权限。然后获取PDF
private void walkDir(File dir,String pattern) {
File[] listFile = dir.listFiles();
if (listFile != null) {
for (int i=0;i<listFile.length;i++) {
if (listFile[i].isDirectory()) {
walkDir(listFile[i]);
} else {
if (listFile[i].getName().endsWith(pattern)) {
fileList.add(listFile[i]);
}
}
}
}
}
通过简单调用方法
walkDir(Environment.getExternalStorageDirectory(),".pdf")