Android中使用js對webview的password控制項賦值的問題

來源:互聯網
上載者:User

在cnblogs的android用戶端開中使用webview類比登入,這樣就需要將使用者輸入的使用者名稱和密碼傳到webview上然後提交,這個過程在mx3的flyme3和flyme4上測試一切正常,然而在我的htcG12上(用的miui4),和三星note2上都報錯。
報錯的代碼為:

 代碼如下 複製代碼

public void LoginByPassword(String username, String password){
        mCurrentRT = EnumRequestType.LoginFinish;
        final String strJS = String.format("javascript:document.getElementById('tbUserName').value='%s';document.getElementById('tbPassword').value='%s';document.getElementById('form1').submit();", username, password);
        mWeb.post(new Runnable() {
            public void run() {
                mWeb.loadUrl(strJS);
            }
        });
    }

mWeb.loadUrl(strJS);時報錯了,報錯的內容為“android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application”。

解決辦法,是對mWeb的settings進行設定不儲存密碼“settings.setSavePassword(false);”代碼如下:

 

 代碼如下 複製代碼
@SuppressLint({ "SetJavaScriptEnabled"})
private void initialWeb(){
    WebSettings settings = mWeb.getSettings();
    settings.setSavePassword(false);
    settings.setSaveFormData(false);
    settings.setJavaScriptEnabled(true);
    settings.setBlockNetworkImage(true);
    mWeb.addJavascriptInterface(new JSInterface(), "IFObj");
    mWeb.setWebViewClient(mBlogWebClient);
}

就此,原因找到了,不過“Unable to add window -- token null is not for an application”的錯誤,並不都是這個導致的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.