//最好给他换个名字
import com.google.accompanist.web.WebView as AccompanistWebView
//这个东西设置url和头信息
val state = rememberWebViewState(url)
//用于判断当前是否是预览模式
val runningInPreview = LocalInspectionMode.current
val navigator = rememberWebViewNavigator()
AccompanistWebView(state = state, navigator = navigator, onCreated = { webView ->
if (runningInPreview) {
// webView.settings breaks the preview 有这东西才能让你预览起来
return@WebView
}
webView.isVerticalScrollBarEnabled = false
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(OnJsInterface(),"android")
}, client = object : AccompanistWebViewClient() {//熟悉的WebViewClient
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
}
}, chromeClient = object : AccompanistWebChromeClient() {//熟悉的WebChromeClient
override fun onReceivedTitle(view: WebView?, title: String?) {
super.onReceivedTitle(view, title)
}
override fun onProgressChanged(view: WebView?, newProgress: Int) {
super.onProgressChanged(view, newProgress)
}
override fun onShowFileChooser(webView: WebView?, filePathCallback: ValueCallback<Array<Uri>>?, fileChooserParams: FileChooserParams?): Boolean {
return super.onShowFileChooser(webView, filePathCallback, fileChooserParams)
}
}, onDispose = { webView ->
//释放
webView.removeJavascriptInterface("android")
})
//js
class OnJsInterface {
@JavascriptInterface
fun follow(message: String) {
LogUtils.i("Clicked follow: $message")
}
}
不用url的纯html代码的
val webViewState = rememberWebViewStateWithHTMLData(
data = "<html><head>\n" +
"<style>\n" +
"body {\n" +
" background-color: #f00;\n" +
"}\n" +
"</style>\n" +
"</head><body><p>$body</p></body></html>"
)