zoukankan      html  css  js  c++  java
  • Android 之 WebView

    1:在AndroidManifest.xml中添加允许android访问网络权限。

    <uses-permission android:name="android.permission.INTERNET"/>

    2:activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

    </RelativeLayout>

    3:MainActivity

    public class MainActivity extends Activity {
      private WebView webView=null;
      private String url="http://www.baidu.com";
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView=(WebView)findViewById(R.id.webView);
        webView.loadUrl(url);

        //设置支持JS or Flash
        WebSettings webSettings=webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setPluginState(WebSettings.PluginState.ON);

        //继续让其他网页显示在WebView中
        webView.setWebViewClient(new WebViewClient(){
          public boolean shouldOverrideUrlLoading(WebView view,String url){
            view.loadUrl(url);
            return true;
          }

        });
      }

    }

    4:运行界面如下。

    WebView不仅可以显示URL网页内容,还可以将服务端传递过来的HTML+CSS片段展现出来例如:

    webView.loadDataWithBaseURL(null, str, "text/html", "UTF-8", null);

    WebView将assets文件夹下面的html文件展现出来:

    webView.loadUrl("file:///android_asset/html/"+index+".html");

    WebView中常见的错误:

    (1):Error

    Activity com.wzh.activity.BsznContent has leaked IntentReceiver
    com.android.qualcomm.browsermanagement.BrowserManagement$1@4196c878 that was
    originally registered here. Are you missing a call to unregisterReceiver()?

     解决方法:不要在XML布局中直接编写WebView的XML布局代码,在代码中编写,将其添加到一个父容器中,例如:

    llXxsdWebView = (LinearLayout)findViewById(R.id.llXxsdWebView);
    webView = new WebView(getApplicationContext());
    llXxsdWebView.addView(webView);

    在onDestroy()方法中:将WebView移除,以及WebView中的所有VIew移除,最后将WebView销毁。

    protected void onDestroy() {
            super.onDestroy();
            if(null != webView){
                llXxsdWebView.removeAllViews();
                webView.removeAllViews();
                webView.destroy();
            }
        }

    (2):Error

    Error: WebView.destroy() called while still attached!

    参考:http://stackoverflow.com/questions/11995270/error-webview-destroy-called-while-still-attached

    类似(1)中的写法:

    webViewPlaceholder.removeView(myWebView);
    myWebView.removeAllViews();
    myWebView.destroy();

    (3):Warning

    skip viewSizeChanged as w is 0

    参考:http://stackoverflow.com/questions/5582530/android-what-does-this-warning-message-refer-to-webcore

    WebView mWebView =(WebView) findViewById(R.id.webview);
    mWebView.getSettings().setBuiltInZoomControls(true);

    总结:对于Android4.0.4在使用 WebView时会出现许多意想不到的问题,相比较Android4.2.2就会好许多。我在Android4.2.2平台上使用WebView,在Logcat下没有报道任何错误异常,而在使用Android4.0.4测试时直接挂掉了。

  • 相关阅读:
    minimsg升级扩展
    一起学习Avalonia(十三)
    @Import注解源码
    Python入门随记(3)
    NET WebApi 后端重定向指定链接
    Net Nlog 持久化到数据库
    NetCore Xunit单元测试依赖注入
    VS 调试时,提示无法启动iis服务器
    NET 反射,对可空类型动态赋值
    MSSQL 查询表结构
  • 原文地址:https://www.cnblogs.com/yshyee/p/3352139.html
Copyright © 2011-2022 走看看