如何从本机pdf阅读器中的URL读取pdf而不将其保存在手机内存中(Eclipse)

时间:2017-03-13 16:04:50

标签: android eclipse pdf

请告诉我一个方法,以便我可以在原生pdf阅读器应用程序中实现阅读PDF(URL),而无需将其保存在手机内存中。我尝试使用Google Doc方法阅读它(使用Google Doc Prefix嵌入pdf网址),但这是一种缓慢的方式。所以请帮助,提前致谢。

1 个答案:

答案 0 :(得分:0)

欢迎您将PDF下载到byte[],然后创建一个openFile(),通过Uri将其ContentProvider提供给其他应用。然后,使用ACTION_VIEW FileInputStreamByteArrayInputStream一起指向您的PDF,以打开独立的PDF查看器应用。

This sample app演示了基本技巧。就我而言,我的PDF来自一个文件和一个byte[],但您可以改为使用ContentProvider

然而:

  • 这只能用于小型PDF文件,因为您没有大型FileProvider的堆空间

  • 设备可能没有任何PDF查看器应用

  • 用户可能无法访问任何PDF查看器应用,即使设备有一个(例如,用户在辅助帐户中作为受限制的个人资料运行)

  • 一旦您的流程终止,PDF就会消失

  • 某些PDF查看器不支持您的TempAPDatabase,因为他们需要自己的流可供查找,而您的流不会(因为它不受文件支持)

将PDF写入internal storage,然后使用USE [master] BACKUP LOG [APDatabase] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MYSQLSERVER\MSSQL\Backup\APDatabase_LogBackup_2017-03-13_10-52-54.bak' WITH NOFORMAT, NOINIT, NAME = N'APDatabase_LogBackup_2017-03-13_10-52-54', NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY, STATS = 5 RESTORE DATABASE [APDatabase] FROM DISK = N'{87A991B1-9305-45C1-A461-9B1A3174A707}10' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5 RESTORE LOG [APDatabase] FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MYSQLSERVER\MSSQL\Backup\APDatabase_LogBackup_2017-03-10_06-47-10.bak' WITH FILE = 1, NOUNLOAD, STATS = 5, STOPAT = N'2016-12-29T00:00:00' GO ,将改善您的应用与PDF查看器的兼容性,并将处理更大的PDF文件,而不允许用户直接访问PDF文件(除了有根设备)。