Android 如何强制文件在应用程序中下载,而不是在默认浏览器中显示
我用WebView创建了一个Android应用程序,但我面临的唯一问题是文件在默认浏览器中打开,而不是下载 这是WebActivity代码:Android 如何强制文件在应用程序中下载,而不是在默认浏览器中显示,android,webview,webclient-download,Android,Webview,Webclient Download,我用WebView创建了一个Android应用程序,但我面临的唯一问题是文件在默认浏览器中打开,而不是下载 这是WebActivity代码: public class WebActivity extends Activity { private WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView
public class WebActivity extends Activity {
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView) findViewById(R.id.webView01);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new myWebClient()
{
@Override
public void onPageFinished(WebView view, String url) {
findViewById(R.id.imageLoading1).setVisibility(View.GONE);
findViewById(R.id.webView01).setVisibility(View.VISIBLE);
}
});
webView.loadUrl("domain");
webView.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);
}
});
}
public class myWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
浏览器应用程序正在打开,因为它是处理将URL作为其数据的意图的合适应用程序,而URL正是您在下载侦听器中使用的数据。 如果不希望浏览器启动,请从下载侦听器中打开带有URL的InputStream,然后自己从文件中提取字节。
感谢您的回复-我尝试了Inputstream,但它再次在新浏览器中打开,请您提供code@user3566830我添加了将URL中的文件保存到我答案中的文件的代码。感谢您提供的代码,但仍然不起作用。我在webView.SetDownloadListener New DownloadListener之后添加了代码{在公开无效onDownloadStartString url、String userAgent之前,请您更具体地说明在何处添加code@user3566830从onDownloadStart调用saveUrl并删除Intent内容。这会在代码中产生很多错误。我删除Intent并从onDownloadStart调用saveUrl。你能提供一个源吗?我的意思是,在complete中进行了更改我在上面放置的e代码-这将是一个很大的帮助,仍然非常感谢您的时间
public void saveUrl(final String filename, final String urlString)
throws MalformedURLException, IOException {
BufferedInputStream in = null;
FileOutputStream fout = null;
try {
in = new BufferedInputStream(new URL(urlString).openStream());
fout = new FileOutputStream(filename);
final byte data[] = new byte[1024];
int count;
while ((count = in.read(data, 0, 1024)) != -1) {
fout.write(data, 0, count);
}
} finally {
if (in != null) {
in.close();
}
if (fout != null) {
fout.close();
}
}
}