美文网首页
集成腾讯X5指路

集成腾讯X5指路

作者: 獠牙血狼 | 来源:发表于2018-10-22 17:54 被阅读253次

    有言在先
    Android系统自带webView,用来浏览网页。但是我们的大鹅厂,有一种号称更厉害的webView,那就是——X5!!!

    0.怎么用?

    这是官方的集成文档:https://x5.tencent.com/tbs/guide/sdkInit.html
    打开一看,这么简单的吗?十步搞定??真的吗???反正我是踩了一坑又一坑,难道是我比较坑吗~ _ ~话不多说,开始怼。

    1.这么用

    (1)下载SDK

    官方SDK下载地址:https://x5.tencent.com/tbs/sdk.html
    现在一共有 2 个版本(以前是3个),我这里用第一个(完整版)

    1.jpg
    (2)解压SDK

    解压后会得到一堆东西,不要嫌多,都会用的到的~再把SDK接入示例-Android studio也给解压了,里面有是个demo,有些东西以后会用到的。


    2.jpg
    (3)导入项目中

    把.jar拷贝到项目的libs目录下,右键Add As Library。
    解压Android studio接入示例,找到X5WebView.java拷贝到项目中(自己写也行,这里是为了方便)。

    (4)使用

    添加权限,一定不要忘!!!

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permision android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    

    新建一个自己的Application,在这里面初始化X5。记得替换项目的Application为这个哦。

    public class App extends Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
            initX5();
        }
    
        private void initX5() {
            QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
                @Override
                public void onViewInitFinished(boolean arg0) {
                    //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                   if (arg0 != true) {
                        //设置自带webView属性
                        WebView webView = new WebView(getApplicationContext());
                        webView.getSettings().setJavaScriptEnabled(true);
                        webView.getSettings().setBlockNetworkImage(false);
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                            webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
                            }
                        }
                    }
    
                @Override
                public void onCoreInitFinished() {
                }
            };
            //流量下载内核
            QbSdk.setDownloadWithoutWifi(true);
            //x5内核初始化接口
            QbSdk.initX5Environment(getApplicationContext(), cb);
        }
    }
    

    在xml中,使用X5WebView来代替WebView使用

    <com.fangwolf.x5wv.X5WebView
            android:id="@+id/x5_wv"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    </com.fangwolf.x5wv.X5WebView>
    

    在Activity实例化后使用

    public class MainActivity extends AppCompatActivity {
        X5WebView x5WebView;
        String url = "https://www.jianshu.com/u/7e5c194cd331";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            x5WebView = findViewById(R.id.x5_wv);
            x5WebView.loadUrl(url);
        }
    
    }
    
    注意:

    X5内核在首次启动的时候,很大可能初始化失败,而去加载自带的WebView,而自带的WebView在加载混合了http和https的时候,可能会出现问题,所以最好设置一下自带的WebView属性吧。
    X5加载失败:


    Screenshot_20181022-171426_X5WV.png

    X5加载成功:


    Screenshot_20181022-171656_X5WV.png
    左上角的提示分别是:包名-pid、自带/X5内核、设备名、设备型号。通过这些提示,可以清楚的看出是哪种内核。如果不想显示这些,在X5WebView中删除drawChild(...)这个方法即可。

    10.感慨~

    相关文章

      网友评论

          本文标题:集成腾讯X5指路

          本文链接:https://www.haomeiwen.com/subject/dauobftx.html