0

我构建了一个应用程序,用户可以在其中上传任何类型的文档。成功上传后,我将相应的 url 作为响应发回。通过使用该响应,我以预览模式显示上传的文档。现在我的问题是

单击该预览后,我想通过使用 inAppBrowser cordova 插件在 App 而不是移动浏览器中显示该文档。为此,我编写了以下代码。它在 IOS 设备而不是 android 中按我预期的方式工作。为了调试用例,我只是硬编码了一些谷歌图片 url 并尝试了 . 即使在 android 中,我也可以在AppBrowser视图中看到该图像。只有用户通过我的应用程序上传的文档存在问题。

window.open(url, '_blank');

如果权限有问题,即使在 IOS 中它也不应该工作,但它正在工作。所以我猜Android有问题。我怎样才能做到这一点。

如下所示,当我单击外部链接时。我无法看到内容,但我可以看到 URL。

在此处输入图像描述

谢谢

4

2 回答 2

1

编辑

您可能需要添加白名单插件。这可以解释为什么它可以在 iOS 上运行,但不能在 android 上运行。

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/

安装

 cordova plugin add cordova-plugin-whitelist

然后在您的配置 xml 中检查您是否有此行:

 <access origin="*" />

原来的

你有没有像这样将应用内浏览器连接到 window.open ?

window.open = cordova.InAppBrowser.open;

这将使任何 window.open 调用都可以路由到应用内浏览器。

此外,您还需要将 location 参数添加到 window.open 调用中:

window.open(url, '_blank', 'location=yes');

还要确保在使用 window.open 方法之前等到 deviceready 触发。我发现有些设备加载插件的速度比其他设备快。

于 2017-05-02T12:19:19.260 回答
0

问题是Android webview,它不能渲染一些文件(大部分),只是简单的文件,比如图像,也许还有txt。

您的选项是使用'_system'而不是'_blank',这将向系统启动一个意图,以便其他应用程序可以打开该文件。另一种选择是使用文件打开器插件而不是 inAppBrowser 插件(有很多文件打开器插件)

于 2017-05-03T09:02:34.373 回答