请告诉我一个方法,以便我可以在原生pdf阅读器应用程序中实现阅读PDF(URL),而无需将其保存在手机内存中。我尝试使用Google Doc方法阅读它(使用Google Doc Prefix嵌入pdf网址),但这是一种缓慢的方式。所以请帮助,提前致谢。
答案 0 :(得分:0)
欢迎您将PDF下载到byte[]
,然后创建一个openFile()
,通过Uri
将其ContentProvider
提供给其他应用。然后,使用ACTION_VIEW
FileInputStream
与ByteArrayInputStream
一起指向您的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文件(除了有根设备)。