无法打开意图android的pdf文件

2024-04-07

我彻底检查了pdf文件是 在/storage/emulated/0/Download/Abcd.pdf"但无法有意打开它。

我在各种视图中打开它,其中一些会导致错误:“无法打开文件”。微软的话说道:check file in the device, but Abcd.pdf当我在android文件系统的文件目录中打开它时,文件打开得很好。

是不是我路线设置错了?

AndroidManifest.xml

<provider
        android:authorities="${applicationId}.provider"
        android:name="android.support.v4.content.FileProvider"
        android:exported="false"
        android:grantUriPermissions="true">

        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>

MainActivity.Java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent intent=new Intent();

    File mypath=new File( Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/","Abcd.pdf");

    Log.e("download",mypath.getAbsolutePath());
      //this log says : /storage/emulated/0/Download/Abcd.pdf
    Uri pdfUri = FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".provider", mypath);



    Log.e("download",mypath.exists()+"");
    if (mypath.exists()) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            Log.e("download","result : "+pdfUri.getPath());
            intent = new Intent(Intent.ACTION_VIEW);
            intent.setType("application/pdf");
            intent.putExtra(MediaStore.EXTRA_OUTPUT, pdfUri);
        }else{

        }
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);


        try {
            startActivity(intent);
        }
        catch (ActivityNotFoundException e) {
            Log.e("error","error"+e);
        }
    }
}

res/xml/provider_paths.xml

<?xml version="1.0" encoding="utf-8"?>
 <paths xmlns:android="http://schemas.android.com/apk/res/android">
 <external-path
name="storage/emulated/0"
path="."/>
</paths>

我正在使用这个功能:

public void openPdf(LocalFile magazine) {

        if (BuildConfig.DEBUG)
            Log.d(TAG, "openPdf() called with: magazine = [" + magazine + "]");

        Intent intent = new Intent(Intent.ACTION_VIEW);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

            File file = new File(Uri.parse(magazine.getPath()).getPath());
            Uri uri = FileProvider.getUriForFile(getContext(),
                getContext().getApplicationContext().getPackageName() + ".provider", file);
            intent.setDataAndType(uri, "application/pdf");
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

        } else {
            intent.setDataAndType(Uri.parse(magazine.getPath()), "application/pdf");
        }

        try {
            startActivity(intent);
        } catch (Throwable t) {
            t.printStackTrace();
            //attemptInstallViewer();
        }

    }

这对我来说效果很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法打开意图android的pdf文件 的相关文章

  • Android TextView 上标

    So I m trying to add superscipt subscript to a TextView basically trying to make a fraction be displayed as 1 2 Not sure
  • 获取按下按钮的压力

    android 中有没有一种简单的方法来获取用户在 onClick 事件期间施加的压力 如果您向按钮添加 MotionEvent 侦听器 您可以向 MotionEvent 请求压力 相关文档 http developer android c
  • 如何更改Android Studio中的编译版本?

    我总是使用 eclipse 来构建 android 项目 当我使用eclipse启动一个新项目时 我可以选择编译版本 但是在Android Studio中 当我启动新模块时 我只能选择最小版本 我试图改变compileSdkVersion
  • 离线安装 android 很困难[已过时]

    我是非洲的一名学生 在我们的土地上 实际上存在缓慢且昂贵的互联网连接 这就是为什么每当我们听到 在线存储库 安装软件方法这个词时我们都会感到恐惧 该死 这通常意味着你必须去别处寻找 问题 如果没有将 Eclipse 连接到互联网 我无法安装
  • 是否针对各种屏幕尺寸建议修改 dp 大小而不是像素?

    比如说 对于屏幕A 240X320 ldpi 和屏幕B 720X1280 xhdpi 上的ImageButton 是否建议在各个屏幕的每个唯一布局资源文件中手动更改其dp 布局宽度和高度 大小 或者 为图像的每个 dpi 大小创建缩放的九块
  • 在android中添加音频到视频

    我想开发一个可以录制视频 mp4 的android应用程序 然后我的资源文件夹中有一些音频文件 mp3 我想将其添加到视频的末尾 所以最终的效果就像首先播放视频 在视频结束时会听到添加的音频 我该怎么做 合并具有不同音频编解码器的文件并不容
  • Android SQLite 查询被 Android Studio 标记为错误

    在我的一个 Android 应用程序中 我使用了一些SQLite自从我更新到以来开始出现问题的查询Android Studio 3 0 尽管我可以编译并运行该应用程序 但它们被标记为错误 这些是查询 db execSQL INSERT IN
  • 是否可以检测Android应用程序卸载?

    我的应用程序使用 Google 的 C2DM 推送通知 来通知用户朋友的新活动 一旦他们安装了应用程序 我就会向 C2DM 服务器注册设备并存储用户的电话号码 所以我知道用户正在使用我的应用程序 我可以向他 她发送推送通知 但是 如果用户卸
  • Geo Fix 在 Android SDK 2.2 中不起作用

    我正在尝试测试 Android 应用程序 我需要发送模拟位置来测试这一点 我已经注册了 requestlocation update 方法 如下 locationManager requestLocationUpdates bestProv
  • 是否可以在没有 SDK 的情况下编写 Android 应用程序?

    只是想知道 由于 Android 应用程序是 Java 程序 是否有可能在不使用 SDK 的情况下完全从头开始编写一个应用程序 如果不是 那为什么不呢 不 Android 应用程序是用 Java 编写的 但仅包含标准 Java API 的一
  • Android 开发工具无法通过 adb 识别 Asus Nexus 7

    问题 正确安装和连接后 adb 无法识别 Asus Nexus 7 设置 华硕 Nexus 7 平板电脑 Windows 7 64 位操作系统 采取的步骤 安装64位Java JDK http www oracle com technetw
  • 通过选中/取消选中 CheckBoxPreference 来启动/停止服务

    我正在编写一个通过选中或取消选中来启动或停止服务的应用程序CheckBoxPreference我试图找到一些信息 例如示例代码或教程 但我还没有找到 如何通过选中或取消选中来启动或停止服务CheckBoxPreference这是在Prefe
  • 在android上获取电池温度

    android 如何获取电池的温度 http developer android com reference android os BatteryManager html http developer android com referen
  • Android Edittext Onclick Datepickerdialog 棒棒糖中出现错误

    我正在使用日期选择器对话框 它在 kitkat 上运行正常 但是当我在棒棒糖上运行应用程序时 当我单击编辑文本时 它会打开一个日期选择器对话框 但当我选择日期时 它会不幸地给出停止错误 以下是 edittext 上日期选择器的代码 priv
  • Android:如何从我的主要活动中调用 findPreference()?

    我正在处理 Android 应用程序的首选项屏幕 如果前一项具有特定值 我想禁用 将其灰显 一项 我已经实现了两个类 MainActivity 和 PreferencesActivity 在 MainActivity 中我这样做 publi
  • Android 应用程序中最用户友好的布局选项

    所以我面临的问题不是主观判断什么对用户最好 我认为 而是有哪些选项可以用来说明定位 Think of some sort of team sports app where you can put little dots for player
  • 我可以通过编程方式选择 Android 布局文件夹吗?

    我正在构建一个 Android 应用程序 它使用不同的布局文件夹 即 Large xlarge 等 根据屏幕尺寸调整大小 唯一的问题是 我想为用户提供一种在小屏幕布局和大屏幕布局之间切换的方法 以防他们拥有无法识别 xlarge 标签的前蜂
  • Android Path addArc 在canvas中两点之间

    我正在尝试在 android 中绘制弧线 在IOS中 用这个方法确实很简单 path addArcWithCenter radius startAngle endAngle clockwise 在android中 我有3个点 我的圆的中心
  • PopupWindow 在 Android API 28 的自定义键盘上被剪切

    我做了一个定制键盘 当您长按某个键时 会出现PopupWindow在按键上方显示一些额外的选项 问题在于 在 API 28 中 此弹出窗口被剪切 甚至顶行完全隐藏 我已经为 API with https stackoverflow com
  • 如何在 Android 中没有视频视图的情况下从 URL 获取视频长度(以毫秒为单位)?

    我正在 Android 中制作一个媒体播放器 我需要一个代码来获取视频长度而不使用视频视图 我在堆栈溢出中看到了很多页面 但每个页面都用于显示如何在视频视图中获取视频的长度 但我需要没有视频视图 你可以使用媒体元数据检索器 http dev

随机推荐

  • @font-face 和 .ttf 文件出现问题

    我正在尝试使用 font face 来实现我在线下载的字体 http www losttype com font name blanch http www losttype com font name blanch 并且我在让它在任何浏览器
  • 保存 ember 数据模型后的转换

    我想在创建帖子后进行转换 post new gt 单击提交 gt Rails 后端成功创建帖子并响应 json gt 重定向到新创建帖子的路径 在 ember data example github 源代码中 他们使用这种方法 transi
  • Grails JSONBuilder

    如果我有一个简单的对象 例如 class Person String name Integer age 我可以使用 JSONBuilder 轻松地将其用户定义的属性呈现为 JSON def person new Person name bo
  • Rails 在模型中验证值在数组内

    我有一个表格 我可以在其中传递一个字段命名 type我想要检查它的值是否在允许类型的数组内以便任何人不得发布不允许的类型 数组看起来像 allowed types type1 type2 type3 type4 type5 type6 ty
  • 异步顺序调用方法

    我有一个在方法中调用的方法列表 如下所示 this doOneThing someOtherObject doASecondThing this doSomethingElse 当这是同步时 它们会一个接一个地执行 这是必需的 但现在我有
  • WPF 数据绑定:根据 var 的内容启用/禁用控件?

    我的表单上有一个按钮 仅当在树视图 或选项卡项中的列表视图 中选择一个项目时才应启用该按钮 当选择一个项目时 它的值将存储在字符串成员变量中 我可以绑定吗IsEnabled按钮的属性到成员变量的内容 也就是说 如果成员变量不为空 则启用该按
  • 杀死一个线程

    我正在处理的项目中有以下代码片段 public void Start Thread t new Thread NotifyIfNecessary Threads Add t t Start t Abort 我想要的是线程 t 应该执行方法
  • 带参数名称和冒号的 C# 方法调用

    我有时开始注意到 当我在 C 中进行方法调用时 我调用的方法的参数名称将显示在附加冒号的智能感知列表中 然后我可以格式化该方法如此称呼 MethodCall parameter1 value1 parameter2 value2 这是新的语
  • 样板代码替换 - 这段代码有什么不好的地方吗?

    我最近创建了这两个 不相关的 方法来替换我的 winforms 应用程序中的大量样板代码 据我所知 它们工作正常 但我需要一些保证 建议来确定是否存在我可能遗漏的一些问题 从记忆里 static class SafeInvoker Util
  • 根据 GPS 坐标计算平均速度的最佳实践

    我这里有一个可以给我 GPS 坐标的设备 我可以定义的时间间隔 我想用它来计算驾驶或驾车旅行时的平均速度 实际上 我使用了正交公式来计算两点之间的距离 然后将其除以给定的时间间隔 通过我遵循的实施这个词 http de wikipedia
  • 在Webpack中通过代码将nonce设置为样式标签

    因为我想启用内容安全策略 CSP noncestyle 属性 所以我需要设置nonce通过代码动态调整样式 网页包设置 devServer contentBase dist watchContentBase true headers Con
  • 为什么我的 mongodb 集合会自动删除?

    我在三个 EC2 实例中有一个 MongoDB 客户端 并且创建了一个副本集 上次我遇到了空间问题约束 https askubuntu com questions 864631 amazon ec2 instance ubuntu 16 0
  • 核心数据实体中布尔属性的类型是什么?

    我以编程方式使用核心数据 即不使用 xcdatamodel数据模型文件 其方式与 Apple 中描述的方式大致相同核心数据实用程序教程 http developer apple com documentation Cocoa Concept
  • 静态数据成员模板专业化的实例化点在哪里

    考虑下面的代码 include
  • Java-如何通过单击按钮添加更多文本字段?

    我创建了一个frame在Java中有一些textfields and buttons在里面 假设用户想要更多文本字段 例如添加更多数据 我想放一个button当用户点击时the button 然后一个新的textfield应该出现 然后用户
  • 如何使新的“使用 Google 登录”按钮在页面重新加载时保留用户登录状态?

    谷歌正在弃用旧的登录按钮 https developers google com identity sign in web sign in有利于新的那一个 https developers google com identity gsi w
  • 将字符串修剪到一定的字数

    我的模板中有一个描述 p data description p 我想将此描述修剪为特定字数 例如前 20 个字 我见过很多过滤器 但它们都会修剪某些字符 在大多数情况下 这会导致最后一个单词中断 您需要使用空格将描述字符串拆分为单词 然后对
  • 有人可以向我解释一下这个“StaleDataException”吗

    有人可以向我解释一下吗StaleDataException 07 11 19 58 23 298 E AndroidRuntime 1044 Uncaught handler thread main exiting due to uncau
  • 如何在 JavaScript 和 Python 中对 unicode 字符串进行 Base64 编码?

    我需要一种加密算法 将文本加密到文本 输入文本可以是 unicode 输出应该是 a z A Z 0 9 最多 64 个字符 并且可以再次解密为unicode 它应该用 javascript 和 python 实现 如果已经有一些图书馆可以
  • 无法打开意图android的pdf文件

    我彻底检查了pdf文件是 在 storage emulated 0 Download Abcd pdf 但无法有意打开它 我在各种视图中打开它 其中一些会导致错误 无法打开文件 微软的话说道 check file in the device