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

如何从SD卡通过意图打开PDF

孙京
2023-03-14

我正在尝试启动意图来打开应用程序中资产文件夹中的pdf。我已经读了几十个帖子,但仍然卡住了。显然,我需要先将pdf复制到sd卡,然后启动意图。还是不起作用。

我认为问题是意图启动,所以我只是尝试打开一个文件“example.pdf”,我使用以下代码复制到SD卡上:

Log.w("IR", "TRYING TO RENDER: " + Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf"), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

try {
    startActivity(intent);
    Log.e("IR", "No exception");
} 
catch (ActivityNotFoundException e) {
    Log.e("IR", "error: " + e.getMessage());
    Toast.makeText(InvestorRelations.this, 
        "No Application Available to View PDF", 
        Toast.LENGTH_SHORT).show();
}

这是我的LogCat输出。

05-10 10:35:10.950: W/IR(4508): TRYING TO RENDER: /mnt/sdcard/example.pdf
05-10 10:35:10.960: E/IR(4508): No exception

除了在运行此代码时,我得到以下吐司(不是由我的应用程序生成的)

“不支持的文档类型”

但是我可以通过安装的PDF查看应用程序手动打开文档。任何帮助都将不胜感激。

共有1个答案

洪雨石
2023-03-14

尝试以下代码,从/sdcard显示pdf文件

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
 类似资料:
  • 我在sdcard中的某个文件夹中有一些pdf文件。我创建了一个将所有pdf显示为ListView的应用程序。当我单击任何pdf文件时,它会在officeSuite应用程序(不支持或损坏文件格式)中出现错误。代码有问题。这是代码。 //显示为ListVIew的项目代码 //打开文件的代码VIA Intent 错误: 损坏或不支持的文件格式

  • 问题内容: 我正在尝试从设备sd卡加载png图像作为可绘制图像。我使用以下功能,但不起作用: 图像路径为:mnt / sdcard / MyFolder / image.png 当我尝试调用该方法时,应用程序崩溃了,我该如何加载位于sdcard中的png图像并将其转换为Drawable对象? 问题答案: 实际上,直接在文件路径中有一个BitmapDrawable构造函数。您正在使用的方法已被描述。

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

  • 问题内容: 我正在通过一个Intent传递一个int,但是我不知道如何接收它,因为我必须从OnCreate方法中接收一个intent,但是如果我将其放置在那里,则无法将其与其余代码中的另一个int进行比较:我在这里发送意图: 在这里,我收到它: 但是在onCreate方法之后,我必须这样做: 问题答案: 您需要获取在方法中传递的数据,而不是在声明中。 另外你不发送,正在发送中。所以,你需要得到从。

  • SD卡设备的使用 SD卡设备的使用 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-09-25 misonyo first edition. *//* * 程序清

  • 我想打开一个有介入的图像 但在转储时,返回的只是空值。 如果我dd实际图像 我明白了 我试过了 但它也返回NULL。 我也试过 它也返回null。 你对我如何打开这个图书馆的图像有什么想法吗?我正在使用Lumen,并尝试使用Docker和php artisan Serve运行它。 会不会跟作曲家有什么关系?