WebView大全(与Js交互,支付宝页面打不开,加载视频返回后仍然有声音等等)

        webview.setWebChromeClient(new WebChromeClient());
        webview.setWebViewClient(new MyWebViewClient());

        WebSettings webSettings = webview.getSettings();
        //设置WebView属性,能够执行Javascript脚本
        webSettings.setJavaScriptEnabled(true);
        //设置可以访问文件
        webSettings.setAllowFileAccess(true);
        //设置支持缩放
//        webSettings.setBuiltInZoomControls(true);
        //自适应屏幕
        webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
//设置js可以直接打开窗口,如window.open(),默认为false
  webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webSettings.setSupportZoom(true);//是否可以缩放,默认true webSettings.setBuiltInZoomControls(true);//是否显示缩放按钮,默认false webSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式 webSettings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题 webSettings.setAppCacheEnabled(true);//是否使用缓存,要是webView中药加载视频,这个必须打开 webSettings.setDomStorageEnabled(true);//DOM Storage

        webview.loadUrl(url);

public class MyWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        view.getSettings().setJavaScriptEnabled(true);
    }
}


以上可以完整的加载一个web页面

下面我们说一下:web页面的中js交互调起分享或者是跳转页面(js调Android中的方法)share.openShare(...);

webview.addJavascriptInterface(new JsObject(this), "share");
public class JsObject {
    private Context context;

    public JsObject(Context context) {
        this.context = context;
    }

    @JavascriptInterface
    public void openShare(final String title, final String shareUrl, final String content) {
        //调起分享的代码,参数js修改
        //或者是进行页面跳转
 }
}

//当webView要调起支付时,操作系统会将支付宝的URL拦截,导致你打不开支付宝页面。
webview.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if( url.startsWith("http:") || url.startsWith("https:") ) {
            return false;
        }
        try{
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity( intent );
        }catch(Exception e){}
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        view.getSettings().setJavaScriptEnabled(true);
    }
});


//当webView加载视频关闭网页声音依旧播放时,添加以下代码
@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.back:
           //页面返回时:
           webview.loadUrl("about:blank");
            finish();
            break;
    }
}


@Override
public void onPause() {
    super.onPause();
    webview.onPause();
    webview.pauseTimers();
}

@Override
public void onResume() {
    super.onResume();
    webview.resumeTimers();
    webview.onResume();
}


@Override
protected void onDestroy() {
    webview.destroy();
    webview = null;
    super.onDestroy();
}


希望以上对您会有帮助,有什么问题可以留言哦。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值