Android WebView無法加載alipays://協(xié)議鏈接怎么辦?

Android WebView無法加載alipays://協(xié)議鏈接怎么辦?

android webview加載alipays://協(xié)議鏈接失敗的解決方案

在Android開發(fā)中,WebView有時無法加載自定義URL scheme,例如alipays://,導致出現(xiàn)net::err_unknown_url_scheme錯誤,即使重寫了shouldOverrideUrlLoading方法,onReceivedError回調(diào)中仍然返回errorCode -10。這是因為WebView默認不支持所有自定義URL scheme。

解決方法的關(guān)鍵在于正確處理shouldOverrideUrlLoading方法。以下是一個改進的代碼示例:

首先,確保你的WebView已設(shè)置WebViewClient:

webView.setWebViewClient(new WebViewClient() {     @Override     public boolean shouldOverrideUrlLoading(WebView view, String url) {         if (url.startsWith("alipays://")) {             Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));             try {                 startActivity(intent);                 return true; // 阻止WebView加載,已處理             } catch (ActivityNotFoundException e) {                 // 支付寶未安裝                 e.printStackTrace();                 //  此處可添加提示用戶安裝支付寶的邏輯                 return true; // 阻止WebView加載,已處理             }         }         return super.shouldOverrideUrlLoading(view, url); // 其他協(xié)議交給WebView處理     }      @Override     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {         super.onReceivedError(view, errorCode, description, failingUrl);         //  此處可添加錯誤處理邏輯,例如顯示錯誤信息     } });

這段代碼的核心是shouldOverrideUrlLoading方法。當URL以”alipays://”開頭時,它創(chuàng)建Intent啟動支付寶應用處理該URL。try-catch塊處理了支付寶未安裝的情況。return true;至關(guān)重要,它告知WebView已處理該URL,無需默認加載行為。 onReceivedError方法用于處理其他加載錯誤。

通過此方法,可以正確攔截并處理自定義URL scheme,避免net::err_unknown_url_scheme錯誤。請檢查你的shouldOverrideUrlLoading方法實現(xiàn)是否與示例一致,并確保應用擁有必要權(quán)限。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊14 分享