雾雨霜星 2021-09-02 15:43 采纳率: 0%
浏览 207

如何在 Android10 / Android11 下读取手机上的pdf文件?

需求:读取手机上所有PDF文件,获取位置,复制到我的app创建的文件夹下。

目前实现:使用MediaStore进行指定后缀的文件搜索(参考了 404 https://www.coder.work/article/1148179)%EF%BC%8C%E8%8E%B7%E5%8F%96PDF%E6%96%87%E4%BB%B6%EF%BC%8C%E8%AF%A6%E7%BB%86%E8%A7%81%E4%B8%8B%E9%9D%A2%E7%9A%84%E4%BB%A3%E7%A0%81%E3%80%82%E5%9C%A8Android9%E7%9A%84%E6%89%8B%E6%9C%BA%E4%B8%8A%E6%98%AF%E5%8F%AF%E4%BB%A5%E7%9A%84%EF%BC%8C%E4%BD%86%E6%98%AF%E5%9C%A8Android10%E5%8F%8A%E4%BB%A5%E4%B8%8A%E7%9A%84%E6%89%8B%E6%9C%BA%E4%B8%8A%E6%98%AF%E4%B8%8D%E8%A1%8C%E7%9A%84%E3%80%82
代码:

List<String> searchResult = queryService.Query();
String pdf = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
        
Uri table = MediaStore.Files.getContentUri("external");
Uri uriInternal = MediaStore.Files.getContentUri("internal");

String[] column = {MediaStore.Files.FileColumns.DATA};
String where = MediaStore.Files.FileColumns.MIME_TYPE + "=?";
String[] args = new String[]{pdf};
@SuppressLint("Recycle") Cursor fileCursor = activity.getContentResolver().query(table, column, where, args, null);
assert fileCursor != null;
while (fileCursor.moveToNext()) {
      String path = fileCursor.getString(fileCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA));
      searchResult.add(path);
 }
fileCursor.close();

补充:我试过使用File file来指定路径,读取手机里一个路径(/storage/emulated/0/Download/QQMail/)下的文件并列出,在Android9的手机上是可以的,但是在Android10和Android11的手机上,该指定路径下的pdf、doc、ppt等文件是无法读取到的,只有文件夹和jpg文件可读取到。

**请问如何在Android10 和 Android11的手机上读取和处理手机本地的pdf文件?
可以有偿,希望得到帮助完成这个项目需求。恳求各位指导! **

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 9月2日

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大