問題
微信文檔描述
https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4
解決方法
文檔說明白了,要在請求頭上加上Refrence,
注意並不是在加載webview時加上請求頭,
而是在調用微信支付的時候加上這個請求頭
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
return try {
if (url!!.startsWith("http:") || url.startsWith("https:")) {
val wvHead: MutableMap<String, String> = HashMap()
wvHead["Referer"] = Referer
view!!.loadUrl(url, wvHead)
} else {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
}
true
} catch (e: Exception) {
false
}
}
完整程序
package com.wuzhao.ktt.wvtaste
import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.view.KeyEvent
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.wuzhao.ktt.R
import kotlin.system.exitProcess
class WebViewTaste : AppCompatActivity() {
private lateinit var wv: WebView
companion object {
// 定義WebView首頁地址[伴生對象]
const val WEB_URL = "你的webview url"
const val Referer = "申請的地址"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_web_view_taste)
initWv()
}
@SuppressLint("SetJavaScriptEnabled")
fun initWv() {
wv = findViewById<WebView>(R.id.wv)
wv.settings.javaScriptEnabled = true
wv.webViewClient = webClient
wv.loadUrl(WEB_URL)
}
private val webClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
return try {
if (url!!.startsWith("http:") || url.startsWith("https:")) {
val wvHead: MutableMap<String, String> = HashMap()
wvHead["Referer"] = Referer
view!!.loadUrl(url, wvHead)
} else {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent)
}
true
} catch (e: Exception) {
false
}
}
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return if ((keyCode == KeyEvent.KEYCODE_BACK)) {
if (wv.canGoBack()) {
wv.goBack()//返回上一頁面
true
} else {
AlertDialog.Builder(this@WebViewTaste)
.setTitle("退出") //設置對話框標題
.setMessage("確定要退出?") //設置顯示的內容
.setPositiveButton(
"確定"
) { _, _ ->
exitProcess(0)//退出程序
}.setNegativeButton(
"取消"
) { _, _ ->
}.show()
false
}
} else {
super.onKeyDown(keyCode, event)
}
}
}
搬家語雀了
csdn編輯器太難用了