当前位置: 首页 > 知识库问答 >
问题:

Android打开pdf文件通过意图

冀阳文
2023-03-14

我在sdcard中的某个文件夹中有一些pdf文件。我创建了一个将所有pdf显示为ListView的应用程序。当我单击任何pdf文件时,它会在officeSuite应用程序(不支持或损坏文件格式)中出现错误。代码有问题。这是代码。

//显示为ListVIew的项目代码

    ListView lv;
    ArrayList<String> FilesInFolder = GetFiles(Environment.getExternalStorageDirectory()
            + "/SOMEFOLDER");
    lv = (ListView) findViewById(R.id.filelist);

    lv.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, FilesInFolder));



    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            // Clicking on items
            open_File();
        }
    });

    public ArrayList<String> GetFiles(String DirectoryPath) {
    ArrayList<String> MyReports = new ArrayList<String>();
    File f = new File(DirectoryPath);

    f.mkdirs();
    File[] files = f.listFiles();
    if (files.length == 0)
        return null;
    else {
        for (int i=0; i<files.length; i++)
            MyReports.add(files[i].getName());
    }

    return MyReports;
}

//打开文件的代码VIA Intent

    public void open_File(){
    File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/SOMEFOLDER");
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(file), "application/pdf");
    intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    Intent intent1 = Intent.createChooser(intent, "Open With");
    try {
        startActivity(intent1);
    } catch (ActivityNotFoundException e) {
        // Instruct the user to install a PDF reader here, or something
    }

错误:

损坏或不支持的文件格式

共有1个答案

刁瀚昂
2023-03-14

我想你忘记指定文件了。看你的代码,你只把它指向文件夹,而没有指向文件本身。我想这就是为什么它告诉你,它的格式是错误的,因为它不是以。可移植文档格式文件的扩展名(portable document format的缩写)

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "SOMEFOLDER" + File.separator + "pdffile.pdf");

编辑:根据您的评论修改方法

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        // Clicking on items
        String fileName = FilesInFolder.get(position);
        open_File(fileName);
    }
});

public void open_File(String filename){
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/SOMEFOLDER", filename);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
Intent intent1 = Intent.createChooser(intent, "Open With");
try {
    startActivity(intent1);
} catch (ActivityNotFoundException e) {
    // Instruct the user to install a PDF reader here, or something
}
 类似资料:
  • 我试图通过MS Word打开pdf文件,执行某些操作,例如评估计算、打印文件等,然后继续关闭文件。我收到的错误消息是“Microsoft Excel正在等待另一个应用程序完成OLE操作。” 我之前尝试过超链接跟踪和

  • 我正在尝试启动来打开应用程序中资产文件夹中的pdf。我已经读了几十个帖子,但仍然卡住了。显然,我需要先将pdf复制到sd卡,然后启动。还是不起作用。 我认为问题是启动,所以我只是尝试打开一个文件“example.pdf”,我使用以下代码复制到SD卡上: 这是我的LogCat输出。 除了在运行此代码时,我得到以下吐司(不是由我的应用程序生成的) “不支持的文档类型” 但是我可以通过安装的PDF查看应

  • 本文向大家介绍Android 打开本地pdf文件,包括了Android 打开本地pdf文件的使用技巧和注意事项,需要的朋友参考一下 Android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用WebView加载的,但是要用vpn才能搞,最后发现一个库挺不错的,再次分享给大家 android-pdfview。下面主要说一下该库的使用方法。 1. 该库的下载地址 https://g

  • 本文向大家介绍Android 打开网络上pdf文件,包括了Android 打开网络上pdf文件的使用技巧和注意事项,需要的朋友参考一下 之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码https://github.com/JoanZapata/android-pdfview,源码地址:h

  • 我有两个网址--https://google.com和https://youtube.com,我想在浏览器中打开这两个网址;当前的解决方案一次只适用于一个链接?有没有一种方法可以同时打开两个URL?

  • 实际上,我需要从我的应用程序中打开默认的下载文件夹。可以吗?如果可以,请提供一些参考。 我可以在以下帮助下获取下载文件夹的路径: 任何帮助都将不胜感激。