android P之后,不可多进程使用同一个目录webView,需要为不同进程webView设置不同目录
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { var processName = getProcessName(this); var packageName = this.getPackageName(); if (!processName.isNullOrEmpty() && packageName != processName) { //判断不等于默认进程名称 WebView.setDataDirectorySuffix(processName)//为 WebView 设置一个特定的数据目录后缀,以便每个应用程序的 WebView 数据目录都是唯一的 } }
private fun getProcessName(context: Context?): String? { if (context == null) return null val manager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager val processInfo = manager.runningAppProcesses processInfo.forEach { if (it.pid == Process.myPid()) { return it.processName } } return null }
在特殊机型或者刷机导致的系统webview被卸载或者文件缺失的情况下,
<!--开启安全浏览功能--> <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="true"/>