Как проверить в Android WebView, если логин не удался или был успешным? На веб-странице входа в систему отображается следующее сообщение, когда логин завершился неудачно из-за неправильного имени пользователя и/или пароля.Ошибка входа в систему Android-WebView Javascript
<div id="errorMsgId1427032461760" class="errorMessage">
Как это проверить, используя JavaScript? (вызов следующего действия работает, но он всегда вызывает следующую активность. Поэтому я хочу запустить эту проверку).
EDIT: Я пробовал добавить JavaScript-интерфейс в webView.loadURL(), но это не сработало.
webView.loadUrl("javascript: if(document.body.innerHTML.toString().indexOf('Invalid') > -1){\n" +
" JSInterface.changeActivity() ;");
EDIT 2: Как использовать?
if(document.body.innerHTML.toString().indexOf("invalid") > -1){ alert("invalid'");
, а затем вызвать намерение, если предупреждение не вызывается. (Предупреждение может быть любой функцией).
EDIT 3:
Я попытался с onConsoleMessage, но он не работает. Вот код:
webView.setWebChromeClient(new WebChromeClient() {@
Override
public boolean onConsoleMessage(ConsoleMessage cm) {
String a = cm.toString();
if (a.equalsIgnoreCase("Success")) {
Toast.makeText(Login.this, "Login Successful", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Login.this, Upload.class);
Login.this.finish();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
if (a.equalsIgnoreCase("Error")) {
Toast.makeText(Login.this, "Please enter correct credentials", Toast.LENGTH_LONG).show();
}
return true;
}
});
и onPageFinished способ, как:
webView.setWebViewClient(new WebViewClient() {
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public void onPageFinished(WebView view, final String url) {
webView.loadUrl("javascript: if (document.querySelectorAll('[type=submit]').length) {\n" +
" var x = document.querySelectorAll('[type=submit]');\n" +
" x[0].addEventListener(\"click\", function() {\n" +
" if (document.body.innerHTML.toString().indexOf(\"Invalid\") > -1) console.log(\"Error\");\n" +
" else console.log(\"Success\");\n" +
" });};");
return true;
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://192.168.0.101:9999/user"); //Local URL.
Я проверил выше Javascript с предупреждением вместо console.log и она работает.
Что такое ошибка? Я не могу понять.
В yt 'javascript:' url, вы оставили фигурные скобки незамкнутыми - нужно добавить '}' после 'JSInterface.changeActivity();'. Кроме того, перед загрузкой страницы вам необходимо ввести 'JSInterface' через« WebView.addJavascriptInteface ». –
Спасибо, я перепроверяю код и проверяю его. Скоро сообщу. – javaEntu
@ МихаилаНаганова это не сработало. Я ввел JSInterface как «JavaScriptInterface JSInterface; JSInterface = new JavaScriptInterface (this); webView.addJavascriptInterface (JSInterface, «JSInterface»); ' – javaEntu