![](/img/trans.png)
[英]How to get links to all pdf files from removable storage(SD Card) of android in java?
[英]How to get all files PDF in device
我想在手機中獲取所有文件 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" />
然后在您的 Manifest -> application 標簽中選擇退出 Android 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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.