Программный щелчок в Android WebView

Добрый день!

У меня есть сайт с href в нем, который перенаправил меня на https

<a id="mA" href="javascript:pLogin(2)" class="login-link__link private-cab-link"><i class="icon-user"></i>Авторизация</a> 

Итак, я могу щелкнуть по нему javascript. Он работает в хромированной консоли

 javascript:(function(){document.getElementById('mA').click();})() 

Теперь я пытаюсь сделать то же самое в WebView, нажав кнопку моего приложения.

 public class RostelecomLoginActivity extends Activity { WebView webView; String url; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.activity_rostelecom_login); Intent webIntent = getIntent(); String url = webIntent.getStringExtra("url"); webView = (WebView) findViewById(R.id.webView1); webView.setWebViewClient(new MeWebViewClient()); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setSaveFormData(true); webView.getSettings().setSavePassword(true); webView.loadUrl(url); Button buttoner = (Button) findViewById(R.id.button1); buttoner.setOnClickListener(new OnClickListener() { public void onClick(View v) { webView.loadUrl("javascript:(function(){document.getElementById('mA').click();})()"); } }); } 

}

Я использую MyWebViewClient, чтобы разрешить все сертификаты

 public class MeWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } 

}

Инъекция js не работает. Если я нажимаю на href в WebView, он работает. Что может быть неправильным? Благодарю.

Click () не реализован в интерфейсе android js, вы должны использовать объект события DOM HTML, например:

 webView.loadUrl("javascript:(function(){"+ "l=document.getElementById('mA');"+ "e=document.createEvent('HTMLEvents');"+ "e.initEvent('click',true,true);"+ "l.dispatchEvent(e);"+ "})()"); 

Вам нужно будет добавить javaScript-интерфейс в WebView для вызова функции JavaScript из кода android.

Попробуйте что-то вроде этого:

  Button buttoner = (Button) findViewById(R.id.button1); buttoner.setOnClickListener(new OnClickListener() { public void onClick(View v) { JavascriptInterface javasriptInterface = new JavascriptInterface(RostelecomLoginActivity.this); webView.addJavascriptInterface(javasriptInterface, "MyInterface"); webView.loadUrl("javascript:(function(){document.getElementById('mA').click();})()"); } });