/** @brief ページ読み込み進行ハンドラ 100% に達したらページ修正、オートログインなどを実施する */ @Override public void onProgressChanged(WebView wv, int progress) { Log.d(TAG, "onProgressChanged = " + progress + " " + wv.getUrl()); if (progress < 100) { if (dlg == null) { dlg = new Dialog(view.getContext()); dlg.setTitle("Loading..."); dlg.show(); } } else { if (dlg != null) { dlg.dismiss(); dlg = null; } if (autoLogin(wv)) { return; } String url = wv.getUrl(); if (url != null && url.startsWith(INNER_URL_PREFIX)) { fixPage(wv); } } }
/** @brief オートログイン */ public boolean autoLogin(WebView wv) { String js, fmt; // ログインページに居るかどうか確認 String url = wv.getUrl(); if (url == null || !url.startsWith(LOGIN_URL)) { return false; } // User ID / Pass を取得 SharedPreferences prefs = context.getSharedPreferences(PrefActivity.PREF_NAME, Context.MODE_PRIVATE); String uid = prefs.getString(PrefActivity.PREF_KEY_USERID, ""); String pass = prefs.getString(PrefActivity.PREF_KEY_PASSWORD, ""); // auto login for (int i = 1; i <= 2; i++) { fmt = "javascript:document.getElementById(\"user_id%d\").value=\"%s\""; js = String.format(fmt, i, uid); runJs(wv, js); fmt = "javascript:document.getElementById(\"password%d\").value=\"%s\""; js = String.format(fmt, i, pass); runJs(wv, js); } return true; }