我遇到了许多关于WebView
支持在 Android 中下载文件的未解决问题。
这是简单的代码(整体MainActivity.java
)WebView
:
package com.webview.downloader;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.pad.android.xappad.AdController;
public class MainActivity extends Activity {
WebView mWeb;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mWeb = new WebView(this);
setContentView(mWeb);
WebSettings settings = mWeb.getSettings();
settings.setJavaScriptEnabled(true);
mWeb.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
mWeb.loadUrl("http://www.site-with-direct-links.somehostingsite.com");
}
}
使用此代码,在打开 URL 并单击链接后,什么也没有发生。
我们需要添加以下代码(就在 之后mWeb.loadUrl();
):
mWeb.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);
}
});
使用此代码,现在我们可以上网并下载文件,例如。点击类似:http://www.google.cz,WebView
将用户重定向到该站点,点击:http://www.google.cz/download-file.apk,默认浏览器或任何其他浏览器,如谷歌浏览器(选择后)将弹出一小段时间,然后开始下载。
所以我的问题如下:如何在不打开任何浏览器的情况下开始下载文件( .zip、.rar、.apk )。
当然,我查看了文档,也搜索了堆栈,但从来没有运气。真实的例子会很好,对我的代码的更改听起来更好!