Android 腾讯 X5 基础使用记录 。
腾讯 X5 是什么?
也是一个类似 WebView 的组件?
为什么不使用Android系统自带的 WebView 而选择 腾讯的 X5?
相对于Android系统自带的WebView有一下有点:安全、极速,省流、可靠、兼容、HTML5能力、内核共享、增强浏览能力。
详细优点请参考腾讯X5官网优点介绍:
效果图:
第一步:下载 jar 包、html文件、so文件,并添加到相应的位置。官网下载 jar 包
第二步:在 build.gradle 文件中 在相应的位置添加代码如下:
复制粘贴即可:
ndk {//腾讯X5
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
需要的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 硬件加速对X5视频播放非常重要,建议开启 -->
<uses-permission android:name="android.permission.GET_TASKS" />
需要添加的混淆:(如果你不需要混淆可跳过这步)
-dontwarn dalvik.**
-dontwarn com.tencent.smtt.**
-keep class com.tencent.smtt.** {
*;
}
-keep class com.tencent.tbs.** {
*;
}
第三步: 在 activity_main.xml 中添加一下代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<FrameLayout
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
第四步:
在 APPAplication.java 中添加以下代码:
public class APPAplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
// TODO Auto-generated method stub
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
GT.logt("腾讯X5内核:" + arg0);
}
@Override
public void onCoreInitFinished() {
// TODO Auto-generated method stub
GT.logt("onCoreInitFinished");
}
};
//x5内核初始化接口
QbSdk.initX5Environment(getApplicationContext(), cb);
}
}
再将 APPAplication 注册
在 X5WebView.java 中 添加以下代码:
public class X5WebView extends WebView {
private WebViewClient client = new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);//防止加载网页时调起系统浏览器
return true;
}
};
public X5WebView(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
this.setWebViewClient(client);
initWebViewSettings();
this.getView().setClickable(true);
}
private void initWebViewSettings() {
WebSettings webSetting = this.getSettings();
webSetting.setJavaScriptEnabled(true);
webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
webSetting.setAllowFileAccess(true);
webSetting.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
webSetting.setSupportZoom(true);
webSetting.setBuiltInZoomControls(true);
webSetting.setUseWideViewPort(true);
webSetting.setSupportMultipleWindows(true);
webSetting.setAppCacheEnabled(true);
webSetting.setDomStorageEnabled(true);
webSetting.setGeolocationEnabled(true);
webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);
}
public X5WebView(Context arg0) {
super(arg0);
setBackgroundColor(85621);
}
}
在 MainActivity.java 中添加以下代码:
public class MainActivity extends Activity {
private X5WebView mWebView;
private ViewGroup mViewParent;
private static final String mHomeUrl = "https://u3dc.com/3d/examples/hdr.html";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewParent = findViewById(R.id.webView1);
mWebView = new X5WebView(this, null);
mViewParent.addView(mWebView);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
mWebView.loadUrl(mHomeUrl);
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().sync();
}
@Override
protected void onNewIntent(Intent intent) {
if (intent == null || mWebView == null || intent.getData() == null)
return;
mWebView.loadUrl(intent.getData().toString());
}
@Override
protected void onDestroy() {
if (mWebView != null)
mWebView.destroy();
super.onDestroy();
}
}
总结:接下来直接运行即可,祝愿小伙伴们一次性成功。ヾ(๑╹◡╹)ノ"
当前文章源码:
点个关注点个赞呗(〃'▽'〃),关注博主最新发布库:https://github.com/1079374315/GT