android - 以编程方式使用外部应用程序编辑 pdf

标签 android file android-intent kotlin android-fileprovider

我有一个让我的应用程序编辑 PDF 文件的请求。因为我发现很难集成到应用程序中,所以我决定使用外部应用程序并决定使用 Xodo reader .

我遇到的问题是,当我的 pdf 在 Xodo 应用程序中打开并编辑时,它没有保存到其原始位置,而是将副本保存到下载文件夹。对我来说,这表明该应用无法将编辑后的文件保存回其原始目的地,我相信这是因为我没有做正确的事情。

我为什么这么想?

当 Xodo 应用程序打开一个 .pdf 文件然后编辑它时,当我返回时它会将它保存到它打开的内存位置。当我用我的应用程序加载它时,它不会那样工作。

这是我的代码:

我如何调用应用程序

    val target = view?.packageManager?.getLaunchIntentForPackage("com.xodo.pdf.reader")
    target?.action = Intent.ACTION_EDIT
    target?.setDataAndType(FileProvider.getUriForFile(context, view?.applicationContext?.packageName + ".fileprovider", report.file), "application/pdf")
    target?.flags = Intent.FLAG_ACTIVITY_NO_HISTORY
    target?.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION

    view?.startActivity(target)

我的@xml/provider_pathslook 是什么样的

<paths xmlns:android="http://schemas.android.com/apk/res/android">
     <external-path name="myApp" path="."/>
</paths>

我的文件在内存中的位置

/Internal storage/myApp

我的内容 URI 是什么样的

content://com.example.myapp.debug.fileprovider/myApp/myApp/example0.pdf

有人知道我哪里做错了吗?

最佳答案

尝试授予 FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION。现在,您仅授予读取权限,因此 Xobo 无法写回提供者。

请注意,没有什么要求 Xobo 写回提供者,因此即使您授予写入权限,Xobo 仍可能将修改后的 PDF 写入单独的文件。

关于android - 以编程方式使用外部应用程序编辑 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49282933/

相关文章:

java - 如何将 android.net.Uri 转换为 java.net.URL?

java - 从 Fragment 启动 Activity 抛出 ClassNotFoundException

android - onTouchEvent() 回调不起作用

android - 当多个 Activity 收到时如何区分 Intent

android - 我无法配置 Intent 和 BroadcastReceiver

Android 加载器在单击时启动,然后方向发生变化 - 不再提供数据

android Camera2 API + 用于在相机预览上绘制的 TextureView 覆盖

c - 如何在 C 中找到行指针?

html - 第二级@import。如何导入导入的 .css 文件?

php - Laravel 最大文件大小验证规则不起作用