java - 如何在java中从android的可移动存储(SD卡)获取所有pdf文件的链接?
问题描述
我无法从可移动存储(SD 卡)中获取 pdf 文件。
我已经使用以下方法成功获取了外部存储中 pdf 的所有链接
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 的所有链接
我想我应该也可以使用相同的方法从内部存储中获取 pdf
不,因为除了专门为您的应用程序预留的目录(例如on )之外,您无权访问internal storage 。getFilesDir()
Context
推荐阅读
- sql - SQL BigQuery:选择基于时间的查询
- c# - C# HtmlAgilityPack - GetAttributeValue 返回 false bool
- php - laravel 5.5 中的博客文章 URL 重定向
- java - Apache Kafka Streams - 无法与窗口聚合
- oracle - 为什么它在没有 PRAGMA AUTONOMOUS_TRANSACTION 的情况下工作
- c - 我应该使用位域来映射传入的串行数据吗?
- r - 给时间索引号
- laravel - 如何集成单独工作的 Laravel 和 Vue 代码不能很好地协同工作
- json.net - JSON.Net Schema 多个自定义验证
- laravel - 如何防止并发发布请求?