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

如何在 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日

悬赏问题

  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振