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

时间:2018-03-14 16:23:50

标签: android file android-intent kotlin android-fileprovider

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

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

为什么我会这么想?

当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_paths看起来像

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

我的文件位于内存中

  

/内部存储/ myApp

我的内容URI是什么

  

内容://com.example.myapp.debug.fileprovider/myApp/myApp/example0.pdf

有人知道我做错了什么,在哪里?

1 个答案:

答案 0 :(得分:2)

尝试同时授予FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION。目前,您只授予读取权限,因此Xobo无法回写提供商。

请注意,不需要 Xobo写回提供程序,因此即使您授予写访问权限,Xobo仍可能将修改后的PDF写入单独的文件。