当前位置:网站首页>X5WebView使用
X5WebView使用
2022-08-10 12:38:00 【锐湃】
项目中经常会用到WebView,Android原生的WebView使用会有点不太好用,在此介绍一个比较好用的X5WebView。
一.添加依赖,权限:
// X5内核WebView
implementation 'com.tencent.tbs:tbssdk:44085'
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
二. 在Application初始化:
public class MyApplication extends Application {
public static final String TAG = "MyApplication";
@Override
public void onCreate() {
super.onCreate();
// X5WebView初始化
initX5WebView();
}
private void initX5WebView() {
// 搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
// x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
LogUtils.d("onViewInitFinished is "+arg0);
}
@Override
public void onCoreInitFinished() {
}
};
// x5内核初始化接口
QbSdk.initX5Environment(this, cb);
// 在调用TBS初始化、创建WebView之前进行如下配置
HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
QbSdk.initTbsSettings(map);
}
}
三.代码中使用:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.tencent.smtt.sdk.WebView
android:id="@+id/forum_context"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
AndPermission.with(this)
.runtime()
.permission(Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_PHONE_STATE)
.onGranted { }
.onDenied { }
.start()
// 加载进度
forum_context.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(p0: WebView?, p1: Int) {
super.onProgressChanged(p0, p1)
LogUtils.d(p1)
}
}
forum_context.settings.javaScriptEnabled = true // 开启js
forum_context.settingsExtension.setDisplayCutoutEnable(true) // 刘海屏适配
forum_context.loadUrl("https://www.baidu.com") // 加载url
}
override fun onDestroy() {
QbSdk.clearAllWebViewCache(this, true) // 清除缓存
super.onDestroy()
}
}
————————————————
版权声明:本文为CSDN博主「Peng.Lei」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32138419/article/details/123796994
边栏推荐
猜你喜欢
3DS MAX batch export file script MAXScript with interface
“68道 Redis+168道 MySQL”精品面试题(带解析)
线代 | 秒杀方法与技巧
想通这点,治好 AI 打工人的精神内耗
关于flask中static_folder 和 static_url_path参数理解
Redis上云迁移实践
友邦人寿可观测体系设计与落地
kubernetes介绍
M²BEV: Multi-Camera Joint 3D Detection and Segmentation with Unified Bird’s-Eye View Representation
MySQL索引的B+树到底有多高?
随机推荐
CodeForces-834C
Codeforces Round #276 (Div. 1) B. Maximum Value
odps sql 不支持 unsupported feature CREATE TEMPORARY
The basic components of Loudi plant cell laboratory construction
九宫格抽奖动效
【iOS】Organization of interviews
燃炸!字节跳动成功上岸,只因刷爆LeetCode算法面试题
没有接班人,格力只剩“明珠精选”
DNS欺骗-教程详解
Codeforces Round #276 (Div. 1) B. Maximum Value
A can make large data clustering method of 2000 times faster, don't poke
广东10个项目入选工信部2021年物联网示范项目名单
Redis 定长队列的探索和实践
协程与任务
Requirements for the construction of Loudi stem cell preparation laboratory
mSystems | 中农汪杰组揭示影响土壤“塑料际”微生物群落的机制
讯飞创意组别 全国选拔赛成绩公布说明
CodeForces - 834C
A detailed explanation of implementation api embed
3DS MAX 批量导出文件脚本 MAXScript 带界面