【问题标题】:Enable download in inAppBrowser - Phonegap / Cordova在 inAppBrowser 中启用下载 - Phonegap / Cordova
【发布时间】:2014-08-13 04:58:55
【问题描述】:

我正在使用 cordova 3.5-0.26 和 inAppBrowser 0.5.0

现在我正在 inAppBrowser 中加载一个外部页面。有一个下载按钮。当我按下下载它不做任何事情。我在 inAppBrowser 中关闭了下载。就像在科尔多瓦视图中一样。

然后我尝试使用以下代码(适用于 Android)激活下载管理器

appView.setDownloadListener(new DownloadListener() {
                    public void onDownloadStart(String url, String userAgent,
                            String contentDisposition, String mimetype,
                            long contentLength) {
                      Intent i = new Intent(Intent.ACTION_VIEW);
                      i.setData(Uri.parse(url));
                      startActivity(i);
                    }
                });

这也不适用于 inAppBrowser。

1) 如何在inAppBrowser 中启用下载? 2) 有没有办法使用默认下载管理器来捕获下载? 3) 如果可能,请提及 ios 和 android 的解决方案。如果不是android现在就可以了。请帮忙...

【问题讨论】:

  • 如果你想使用安卓的下载管理器,你需要打开股票浏览器。除非您准备好调整 Cordova 的 Java 文件以捕获任何可下载的文件并通过 AsyncTask 执行它。更多阅读在这里stackoverflow.com/a/12078937/541591
  • 如果没有其他方法出现,我已准备好调整 java 文件。我将调整 inAppBrowser java 文件以强制它下载。虽然我期待为 iOS 和 android 提供更好的解决方案。我不知道目标 C。@JamesWong
  • 而且我使用内置浏览器的下载管理器没有问题。
  • 您也可以使用 Cordova 的 File API 下载文件,然后您的代码将跨平台运行。
  • 不。那不是一个选择。外部链接是第三方网站。我无法控制它。所以不会有下载地址。 @JamesWong

标签: android ios cordova webview inappbrowser


【解决方案1】:

InAppBrowser 不允许下载。您需要修改插件以允许下载。

对于安卓,在platforms\android\src\org\apache\cordova\inappbrowser

方法名private void navigate(String url) {

包括

this.inAppWebView.setDownloadListener(new DownloadListener() {
                    public void onDownloadStart(String url, String userAgent,
                            String contentDisposition, String mimetype,
                            long contentLength) {
                      Intent i = new Intent(Intent.ACTION_VIEW);
                      i.setData(Uri.parse(url));
                      cordova.getActivity().startActivity(i);
                    }
                });

在这行之前this.inAppWebView.requestFocus();

同样的代码在方法public void run() {

在这一段之后

if (clearAllCache) {
                CookieManager.getInstance().removeAllCookie();
            } else if (clearSessionCache) {
                CookieManager.getInstance().removeSessionCookie();
            }

            inAppWebView.loadUrl(url);

在 onCreate 内的 .java 文件中

appView.setDownloadListener(new DownloadListener() {
                    public void onDownloadStart(String url, String userAgent,
                            String contentDisposition, String mimetype,
                            long contentLength) {
                      Intent i = new Intent(Intent.ACTION_VIEW);
                      i.setData(Uri.parse(url));
                      startActivity(i);
                    }
                });

不了解 iOS

【讨论】:

  • 我试过了,得到这个错误,你能帮帮我吗? this.inAppWebView.setDownloadListener(new DownloadListener() { ^ symbol: variable inAppWebView
  • 它不工作..它不被接受的答案..我尝试了相同的代码..它从未执行过..
  • 注意:不要浪费时间使用这个解决方案;它根本不起作用。
猜你喜欢
  • 1970-01-01
  • 2014-03-23
  • 2013-03-20
  • 2023-03-23
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 2017-11-12
相关资源
最近更新 更多