【问题标题】:Changing webView content in Android Studio在 Android Studio 中更改 webView 内容
【发布时间】:2019-07-26 02:56:17
【问题描述】:
我想获取页面源代码,查找特定文本并将其替换为不同的文本。然后我想向用户显示更改后的页面。有没有办法在 Android Studio 中做到这一点?
【问题讨论】:
标签:
java
android
html
web
【解决方案1】:
您可以做的事情是使用自定义 WebView 并添加一个新方法来自己加载 URL 的 HTML 并修改返回的 HMTL。这是一个使用协程的 Kotlin 示例:
class OverrideWebView : WebView {
constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
private val okHttpClient = OkHttpClient()
fun loadUrlAndReplace(url: String, replace: (String) -> String) {
val request = Request.Builder()
.url(url)
.build()
GlobalScope.launch {
okHttpClient.newCall(request).execute().body()?.string()?.let { html ->
GlobalScope.launch(Dispatchers.Main) {
val newHtml = replace(html)
loadData(newHtml, "text/html", "UTF-8");
}
} ?: kotlin.run {
Log.e("ERROR", "Error loading $url")
}
}
}
}
用法:
val url = "https://example.com"
webView.loadUrlAndReplace(url) {html->
html.replace("Original Text","New Text")
}
【解决方案2】:
很遗憾,你不能。
您有两个选择,您可以获取 html 源代码 - 解析它并尝试在您的 android 应用中调整设计 + 自己添加功能。
或者将网站显示为Webview,但它完全没有用,因为你只能查看页面的内容,无法更改文本等。
无论哪种方式,您都必须自己完成几乎所有事情。但无论如何,拥有和想法已经是一个好的开始,祝你好运!