我正在尝试从 Android 应用程序中打开一些 pdf 文件。我正在使用 Intent 来执行此操作:
Intent intent = new Intent();
intent.setDataAndType(Uri.parse(url), "application/pdf");
startActivity(intent);
这段代码对于某些 pdf 效果很好,但当我尝试打开其他 pdf 时却失败了。
这是 Android 向我显示的消息:
文件有问题。
我必须提到的是,打开时没有问题的 pdf 是使用一个 Crystal Report 模板创建的,而打开失败的 pdf 是使用另一个模板创建的。
相反,如果我打开在我的浏览器(在我的计算机上)上失败的 pdf 的 url,它不会给我任何打开它们的错误,所以我猜想 Android 上可能存在一些限制,与某些 pdf 不同另一个(在水晶报表模板上)但我看不到它。
在 Android 上打开 pdf 文件有什么限制? (大小、水晶报表的一些不允许的参数等等……)
我已经放弃了这可能是一个大小限制,因为出现问题的 pdf 文件比没有出现任何错误的文件小。
证明我已经做到了:
- 在浏览器上打开错误的 PDF ~~> 好的
- 在手机上下载错误的PDF并打开~~> OK
- 在APP上打开错误的PDF ~~>Error
- 在PDF崩溃的公司APP上打开好的PDF ~~> OK
EDIT
我注意到我正在使用http://
协议,但 PDF 位于https://
协议,所以我已经改变了它Uri.parse
method.
当我进行此更改时,应用程序崩溃并在日志中显示错误:
android.content.ActivityNotFoundException:找不到处理 Intent 的 Activity
另外,我注意到 PDF 没有给我任何错误,其网址为http://
协议而不是https://
所以我猜https://
协议可能是问题所在。
我只能打开吗http://
请求意图?