Intereting Posts
Добавление внешней библиотеки в студию Android Android-трейлер Android-стиль слайдов Эффект щелчка на кнопке в Android Android Robolectric для тестирования Marshmallow PermissionHelper Как использовать экран контактных данных, например Lollipop Пример FloatingActionButton с библиотекой поддержки Инструмент для пакетного преобразования растровых изображений ресурса android в разные плотности Как заменить значок гамбургера, который используется для ActionBarToggle на панели инструментов Android, с пользовательской возможностью рисования? Как зарегистрировать этот планшет в списке Ubuntu udev? Espresso соответствует первому элементу, найденному, когда многие из них находятся в иерархии Как запустить эмулятор Android для Intel x86 Atom без аппаратного ускорения в Windows 8 для API 21 и 19? Как я могу обмениваться ресурсами между различными проектами Eclipse, чтобы избежать дублирования? Каков цвет по умолчанию для разделителя ListView? Как получить текущее местоположение в google map android

Как вызвать функцию javascript непосредственно из активности на Android?

Я хотел знать, есть ли способ, который я могу назвать функцией JavaScript из собственной активности Android.

Я наткнулся:

webView.loadUrl("javascript:hello()"); 

Но это не сработало для меня.

Кроме того, как Android узнает, на какой странице html эта функция JavaScript находится?

Solutions Collecting From Web of "Как вызвать функцию javascript непосредственно из активности на Android?"

Android может вызывать только метод javascript, если html-страница загружается в webView

 webView.loadUrl("javascript:hello()"); 

Вызовет метод hello writen на странице html, только если страница, содержащая этот метод, в настоящее время загружается в элемент управления веб-просмотром

Первый звонок

 webview.loadUrl("Your html page url"); 

Затем позвоните

 webView.loadUrl("javascript:hello()"); 

Если у кого-то есть проблемы с этим, как и я, вам нужно вызвать функцию javascript после завершения загрузки страницы, иначе javascript не будет вызываться:

  webviewer.loadUrl("file:///android_asset/mypage.html"); webviewer.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { webviewer.loadUrl("javascript:hello()"); } }); 

Прежде чем использовать JavaScript, сначала вам нужно проверить, включен ли Javascript или нет в вашем приложении, используя «getJavaScriptEnabled ()» (его значение по умолчанию FALSE). И метод loadUrl () используется только для загрузки текущей страницы. Он ничего не делает с JavaScript.

ПРИМЕР:

Настройка WebView

// инициализация webview

 webView = (WebView) findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); 

Загрузка HTML в WebView

 webView.loadUrl("file:///android_asset/testhtml.html"); 

Настройка WebChromeClient на webView

 webView.setWebChromeClient(new MyJavaScriptChromeClient()); 

Класс MyJavaScriptChromeClient Здесь мы должны переопределить метод onJsAlert () для обработки функции оповещения JavaScript.

 private class MyJavaScriptChromeClient extends WebChromeClient { @Override public boolean onJsAlert(WebView view, String url, String message,final JsResult result) { //handle Alert event, here we are showing AlertDialog new AlertDialog.Builder(MainWebViewActivity.this) .setTitle("JavaScript Alert !") .setMessage(message) .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // do your stuff result.confirm(); } }).setCancelable(false).create().show(); return true; } } 

Мой Html-файл: testhtml.html:

 <html> <body > <div onclick="alert('hello')"> Click Me !! </div> </body> </html> 

Как это работает ? Когда текст «Click Me !!» На экране WebView вызывается функция android onJsAlert (представление WebView, строковый URL-адрес, сообщение String, конечный результат JsResult). Параметр оповещения скопирован в параметр сообщения функции onJsAlert. И остальная часть обработки выполняется там. Здесь мы показываем AlertDialog.