Intereting Posts
Преобразовать строку Date в timestamp в Android? Создание объекта местоположения в Android со значениями широты и долготы Android-приложение поддерживается 0 устройствами Как сделать ActionBar как Google Play, который исчезает при прокрутке In-app billing андроидная аутентификация возврата требуется при попытке подписаться на продукт Как установить BackgroundColor на ImageView на Android? Не удается решить символ «OnMapReadyCallback» Проблема Не удалось разрешить: com.google.firebase: firebase-core: 9.0.0 Как отключить звуковые эффекты по умолчанию для всех моих приложений или действий Существует ли какой-либо конструктор форм для Google Android Android: Сброс позиции анимации после завершения В Android-браузере Android Google Chrome можно настроить безопасное обращение-небезопасное происхождение как безопасное Намерение возобновить ранее приостановленную деятельность (вызванную из уведомления) Граница для EditText? OBD2 – симулятор Bluetooth ELM327

Программный щелчок в 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, он работает. Что может быть неправильным? Благодарю.

Solutions Collecting From Web of "Программный щелчок в Android 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();})()"); } });