你的程式碼出現這個錯誤,是因為 shouldOverrideUrlLoading(view: WebView, url: String): Boolean 已經被標記為過時(deprecated)。
解決方案
✅ 正確寫法(使用新方法)
Google 在 API 24(Android 7.0)後,推薦使用:
為什麼要改?
❌ 舊方法(已過時)
這個方法在 API 24(Android 7.0)後被標記為 @Deprecated,原因是它:
-
無法正確處理 POST 請求
-
無法獲取額外 HTTP 標頭
-
無法準確辨識來源(例如 WebView 還是其他 app 呼叫)
✅ 新方法
這個新方法:
-
提供完整的
WebResourceRequest,可讀取完整 URL 與 HTTP 標頭 -
更安全且符合新的 WebView 行為
如果你的 App 支援舊版 Android(API < 24)
如果你的 app 需要支援舊版 Android,則可以同時實作新舊方法:
這樣可以確保:
-
Android 7.0 以上 使用
shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest) -
Android 6.0 及以下 使用
shouldOverrideUrlLoading(view: WebView, url: String)
結論
-
API 24 以上 用
shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest) -
如需兼容舊版 Android,則兩個方法都實作,並用
@Suppress("DEPRECATION")忽略警告。
這樣你的 WebView 會更穩定、更安全,並且不會再出現警告! 🚀
沒有留言:
張貼留言