我使用下面的代码用webView填充我的片段。每当用户点击webView中的任何下载链接时,我都想从外部浏览器下载任何文件。
我知道Mainactivity,Code Code Fine。
webView.setDownloadListener(new DownloadListener()
{
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength)
{
//download file using web browser
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
Toast.LENGTH_LONG).show();
startActivity(i);
}
});

但是我想为Fragments实现,我怎样才能实现这一目标。
我的片段代码是
package com.nepalpolice.cdp;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
/**
* Created by Sagar on 2017/09/23. yo chai menupage ko Fragments ko lagi
*/
public class webb extends Fragment {
WebView myWebView;
private LinearLayout container;
private Button nextButton, closeButton;
private EditText findBox;
ProgressBar pbar;
public webb() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_webb, container, false);
String url1 = getArguments().getString("url1");
myWebView=(WebView)rootView.findViewById(R.id.webview);
pbar = (ProgressBar)rootView.findViewById(R.id.progressBar1);
pbar.setVisibility(View.VISIBLE);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
myWebView.getSettings().setLoadsImagesAutomatically(true);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.setInitialScale(1);
myWebView.getSettings().setLoadWithOverviewMode(true);
myWebView.getSettings().setUseWideViewPort(true);
WebSettings webSettings = myWebView.getSettings();
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.loadUrl(url1);
return rootView;
}
public static String changedHeaderHtml(String htmlText) {
String head = "<head><meta name=\"viewport\" content=\"width=device-width, user-scalable=yes\" /></head>";
String closedTag = "</body></html>";
String changeFontHtml = head + htmlText + closedTag;
return changeFontHtml;
}
private class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
//remove your progressdialog here
super.onPageFinished(view, url);
pbar.setVisibility(View.GONE);
}
}
}
&#13;
提前致谢。
答案 0 :(得分:0)
您可以通过覆盖WebViewClient中的 shouldOverrideUrlLoading 方法获取在网页视图中点击的网址
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// download your stuff here
return false;
}
请务必阅读documentation并覆盖正确的 shouldOverrideUrlLoading 方法,具体取决于您针对应用定位的SDK Api数量!
欢呼声
答案 1 :(得分:0)
您可以使用下载侦听器,
mWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent, String contentDescription,
String mimetype, long contentLength) {//code here}