【问题标题】:Android how to pass a PDF file as byte array to an intentAndroid如何将PDF文件作为字节数组传递给意图
【发布时间】:2012-10-22 04:29:19
【问题描述】:

我有一个活动允许用户使用默认的 pdf/电子书查看器打开加密的 pdf 文件。加密的pdf文件的解密结果是一个字节数组。我想将该字节数组传递给以 PDF 格式打开该字节数组的意图。意图实例化是这样的:

PackageManager pm = PackageManager;
Intent intentPdf = pm.GetLaunchIntentForPackage("com.adobe.android");

这可能吗? pdf阅读器(Adobe /任何其他)可以从字节数组中理解它是PDF文件吗? 我尝试使用 Bundle.PutByteArray 和 Intent.putExtra,但它不起作用。

var bundle = new Bundle();
bundle.PutByteArray("key", inputFileData);
intentPdf.PutExtra("name", bundle);
StartActivity(intentPdf);

inputFileData 是我的字节数组。

【问题讨论】:

  • 哦不不不不。您不想通过 Intent 传递整个 PDF 内容。相信我,我是一名开发人员。
  • 好的,但是甚至可以传递整个 PDF 吗?只是要知道,因为如果是这样,我可以对 PDF 大小进行排序,对于大的使用 URI 方法。
  • 您不会想要传递整个 PDF。意图不是为此而制定的。请参阅我对 Laurence-Dawson 答案的评论。

标签: android pdf tags


【解决方案1】:

我认为捆绑包的最大大小非常小,您最好将 URI 传递给已解密 pdf 的 pdf 阅读器。

【讨论】:

  • 我同意你的建议,但我想要这种方法,使用字节数组,这样 pdf 阅读器将无法访问任何 pdf 文件路径,只有一个字节数组。
  • 我建议您考虑添加一个 ContentProvider,因为您的字节数组对于捆绑包来说可能太大:developer.android.com/guide/topics/providers/…
  • 尺寸很小的原因与Intents 的目的有关:“意图是对要执行的操作的抽象描述。” 操作描述。您要使用的数据应表示为 Uri。 (文档说。)
【解决方案2】:

pdf 阅读器(Adobe/任何其他)可以从字节数组中理解它是 PDF 文件吗?

可能不会。欢迎您联系这些应用程序的开发人员并询问他们。而且,正如其他人指出的那样,由于尺寸问题,这是一个坏主意。此外,如果您启动的 PDF 查看器碰巧启动了自己的任务,your byte array will be readable by any app on the device

或者,欢迎您使用ContentProvider,例如this one,您可以在其中制定一些一次性的Uri 结构,因此一旦PDF 查看器使用Uri,其他任何东西都不能。

或者,欢迎您编写自己的基于字节数组的 PDF 查看器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2012-01-28
    • 2016-04-14
    • 1970-01-01
    • 2018-12-26
    相关资源
    最近更新 更多