zoukankan      html  css  js  c++  java
  • 安卓WebView在项目中总结

    一、简介

    在安卓开发中我们会遇到许多处理网页的功能,以下就是我在实际中用到的分享给大家

    1.显示和渲染Web页面

    2.可和JavaScript交互调用

    二、常用的方法

    //激活WebView为活跃状态,能正常执行网页的响应
    webView.onResume() ;
    
    //当页面被失去焦点被切换到后台不可见状态,需要执行onPause
    //通过onPause动作通知内核暂停所有的动作比如JavaScript执行。
    webView.onPause();
    //在关闭了Activity时,如果Webview的音乐或视频,还在播放。就必须销毁Webview//需要先从父容器中移除webview,然后再销毁webview:
    rootLayout.removeView(webView); 
    webView.destroy();
    private WebViewClient webViewClient = new WebViewClient() {

    @Override
    public void onLoadResource(WebView view, String url) {
    super.onLoadResource(view, url);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView webview, String url) {
    webview.loadUrl(url);
    return true;
    }
    // 设定加载开始的操作
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    LogUtil.print("onPageStarted");
    }

    //设定加载结束的操作
    @Override
    public void onPageFinished(WebView view, String url) {
    String viewTitle = view.getTitle();
    title_webview = viewTitle;
    Url = url;
    }
    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    //用javascript隐藏系统定义的404页面信息
    LogUtil.print("onReceivedError errorCode =" + errorCode);
    String data = "";
    view.loadUrl("javascript:document.body.innerHTML="" + data + """);

    }
    };

    三、与js的交互

          mWebView.getSettings().setJavaScriptEnabled(true);
            //有JS交互的话加上下边的
            mWebView.addJavascriptInterface(new JSInterfaceCoupon(this), "yulinjs");
        // yulinjs为标识符交互的字段 mWebView.getSettings().setSupportZoom(false); mWebView.getSettings().setRenderPriority(RenderPriority.HIGH); mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); //设置 缓存模式 if (!NullUtil.isStringEmpty(type)&&type.equals(TOKEN_URL)){ mOpenFileWebChromeClient = new OpenFileWebChromeClient(this); mWebView.setWebChromeClient(mOpenFileWebChromeClient); }else{ mWebView.setWebChromeClient(new CustomChromeClient("HostApp", HostJsScope.class)); }
    //书写累通过构造传入当前上下文
    public class JSInterface {
    Activity activity;
    public JSInterface(Activity activity){
    this.activity=activity;
    }
    //写方法来调用js
    @JavascriptInterface
    public void jumpToYuQuanAdmin(String id){
    Intent intent = new Intent(activity, ActivityUserInfo_2.class);
    int uid = UnitSociax.stringParseInt(id);
    intent.putExtra("uid", uid);
    activity.startActivity(intent);
    }

    }
    //下面是html代码
    <script type="text/javascript">   
    function showToast() {       
       yulinjs.showToast("哈哈啊哈 ");
         }
    </script>
    
    </head>
    <body>
    <input type="button" value="调用"
         onClick="showToast()"/>
    </body>
    
    html代码很简单,在想调用原生方法的js方法中使用yulinjs.shwoToast(“”)就可以成功调用原生方法。我们可以通过它来复制信息,获取点击事件等。
    (shwoToast是原生方法名,android是我们在addJavascriptInterface方法中自己定义的名字)。

    四、返回每一层的问题

    /是否可以后退
    Webview.canGoBack() 
    //后退网页
    Webview.goBack()
    
    //是否可以前进                     
    Webview.canGoForward()
    //前进网页
    Webview.goForward()
    //手机下方返回按钮返回上一页并不是退掉整个webview
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (isNeedBack && keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
    mWebView.goBack();// 返回前一个页面
    return true;
    }
    return super.onKeyDown(keyCode, event);
    }
     

     作者:LeiLei_Tua

  • 相关阅读:
    【编程基础】const与#define的区别
    【Unity3D】模仿制作“神庙逃亡”吃金币后金币飞出屏幕效果
    【基础数学】素数判定、素数打表
    【NYOJ-187】快速查找素数—— 枚举法、筛选法、打表法
    【基础数学】质数,约数,分解质因数,GCD,LCM
    【NYOJ-35】表达式求值——简单栈练习
    【UVa-679】小球下落——二叉树的编号
    【UVa-442】矩阵链乘——简单栈练习
    【UVa-514】铁轨——栈的学习
    gitignore git提交忽略文件
  • 原文地址:https://www.cnblogs.com/widgetbox/p/7761620.html
Copyright © 2011-2022 走看看