首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android WebView 實現記住密碼:獲取登入表單帳號密碼欄位

     編輯:程式設計綜合問答

核心思路

WebView 載入登入頁 → 用戶輸入帳密點擊登入 → **攔截表單提交** 獲取帳密 → 存儲 (SharedPreferences/加密資料庫) → 後續自動填充。

實現步驟

  1. 開啟 JS 支援與 DOM 儲存**:
    
    WebSettings ws = webView.getSettings();
    ws.setJavaScriptEnabled(true);
    ws.setDomStorageEnabled(true);
    ws.setSaveFormData(true); // WebView 內建表單記憶 (API 26+ 棄用)
    
  2. 註入 Java 接口供 JS 呼叫**:
    
    class JsBridge {
        @JavascriptInterface
        public void saveCredentials(String username, String password) {
            // 存入 SharedPreferences (加密)
        }
    }
    webView.addJavascriptInterface(new JsBridge(), "Android");
    
  3. 頁面載入完成後注入 JS 監聽提交**:
    
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            view.evaluateJavascript(
                "document.querySelector('form').addEventListener('submit', function(e) {" +
                "  var u = document.querySelector('input[type=text], input[name=username]').value;" +
                "  var p = document.querySelector('input[type=password]').value;" +
                "  if (u && p) Android.saveCredentials(u, p);" +
                "});", null);
        }
    });
    
  4. 自動填充**:再次載入時 `evaluateJavascript` 設定 `value`。

安全警示

  • **嚴禁明文存儲密碼**,必須 AES/BCrypt 加密。
  • 僅在**自有業務域名**啟用,防止釣魚頁竊取。
  • Android 8.0+ 建議使用 **Autofill Framework** 系統級填充,而非自建。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved