问题描述
public String findBooks() {
String pdf = ".pdf";
String epub = ".epub";
File dir = Environment.getExternalStorageDirectory();
Queue<File> toVisit = new PriorityQueue<>();
toVisit.add(dir);
String pdfs = "";
int pdfCount = 0;
if (toVisit.size() != 0) {
while(true){
File file = toVisit.remove();
File[] tmpList = file.listFiles();
int i;
for(i = 0; i < tmpList.length; i++){
if (tmpList[i].isDirectory()) {
toVisit.add(tmpList[i]);
}
else if (tmpList[i].getName().endsWith(pdf) || tmpList[i].getName().endsWith(epub) ){
pdfs += tmpList[i].toString() + ",";
pdfCount += 1;
}
}
if(toVisit.size() == 0){
Toast.makeText(getReactApplicationContext(),"End of search: "+ String.valueOf(pdfCount),0).show();
break;
}
}
}
return pdfs;
}
解决方法
我已使用以下方法成功获取了外部SD卡中pdf的所有链接
该代码适用于external storage,而不适用于removable storage。
我想我应该也可以使用相同的方法从内部存储中获取pdfs
否,因为您无权访问internal storage,除了为应用程序专门设置的目录(例如getFilesDir()
上的Context
)。