使用XWalkView 替换 WebView控件

问题背景

系统签名app(android:sharedUserId="android.uid.system")运行webview(Android 5.0+)会出现闪退问题

问题分析

SharedUserid,是指拥有同一个Userid的多个APK可以配置成运行在同一个进程中,从而实现各APK的资源共享。但是使用这句话之后也就导致安全性能的问题。因为webview允许运行js,如果用户通过js注入安全代码,那么js就可以肆无忌惮的使用系统权限,这无疑是一个漏洞,可谓门户大开,所以在Android 5.0以后,若还要使用SharedUserid签名,就不能在使用webview控件了。

使用XWalkView 替换 WebView控件,步骤:

1.下载zip包,解压后导入。下载地址

2.关联此Library。如何在as中添加aar包

3.在清单文件中写入下列权限









4.layout文件写法,和其他自定义控件一样。

5.使用XWalkView 加载页面

// url
mXWalkView.load("http://crosswalk-project.org/", null);
// this loads a file from the assets/ directory
mXWalkView.load("file:///android_asset/index.html", null);

6.在Webview中有WebViewClient,那XWalkView呢?

mXWalkView.setResourceClient(new XWalkResourceClient(mXWalkView){
    @Override
    public void onLoadFinished(XWalkView view, String url) {
        super.onLoadFinished(view, url);
    }
    @Override
    public void onLoadStarted(XWalkView view, String url) {
        super.onLoadStarted(view, url);
    }
});

7.调用JavaScript

不像WebView一样获取setting设置setJavaScriptEnabled为true才能执行。Crosswalk可以直接执行js。当然,按照Kitkat引入的方式,使用evaluateJavascript方法也是可以的。(大神们推荐)
mXWalkView.load("javascript:document.body.contentEditable=true;", null);


好,到目前为止XWalkView 的基本使用也就介绍完了。希望对你有帮助。


你可能感兴趣的:(Android,5.1,xwalkview,webview)