используя JavaScript в Android WebView

Я пытаюсь запустить действие из интерфейса javascript в моем веб-представлении. В примере показан тост. Как я могу назвать класс вместо тоста?

<code>public class JavaScriptInterface {
Context mContext;

/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
    mContext = c;
}

/** Show a toast from the web page */
public void showToast(String toast) {
    Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
</code>

это для HTML-страницы.

<code><input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />

<script type="text/javascript">
function showAndroidToast(toast) {
    Android.showToast(toast);
}
</code>

 Common06 мая 2012 г., 20:12
я уже сделал это
 JaredMcAteer06 мая 2012 г., 20:08
Я недостаточно опытен, чтобы ответить, но читал ли ты это:developer.android.com/guide/webapps/…
 Sagar Nayak17 апр. 2016 г., 11:09
Я хочу сделать это без веб-просмотра. только внутренне это возможно.
 Common06 мая 2012 г., 20:50
ты не получил мой вопрос, я хочу назвать намерение вместо тоста. я уже сделал этот тост пример работы. спасибо в любом случае
 JaredMcAteer06 мая 2012 г., 20:13
Хорошо, я просто не видел нигде, где вы включили JavaScript в веб-просмотре, и хотя это было актуально.

Ответы на вопрос(2)

@ android.webkit.JavascriptInterface аннотация поверх вашегоchangeActivity метод в вашем коде Android, если вы работаете на Android 4.2 или выше. Посмотри этоссылк для большего

Решение Вопроса

дставлении. JavaScriptInterFace может быть внутренним классом, как показано ниже. Этот класс будет иметь функцию, которую вы можете вызывать со страницы html (через javaScript), и внутри этой функции вы можете написать код для изменения активности.

Вот рабочее решение для вас:

public class JavascriptInterfaceActivity extends Activity {
    /** Called when the activity is first created. */


    WebView wv;

    JavaScriptInterface JSInterface;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        wv = (WebView)findViewById(R.id.webView1);

        wv.getSettings().setJavaScriptEnabled(true);
        // register class containing methods to be exposed to JavaScript

        JSInterface = new JavaScriptInterface(this);
        wv.addJavascriptInterface(JSInterface, "JSInterface"); 

        wv.loadUrl("file:///android_asset/myPage.html");

    }


    public class JavaScriptInterface {
        Context mContext;

        /** Instantiate the interface and set the context */
        JavaScriptInterface(Context c) {
            mContext = c;
        }

        @android.webkit.JavascriptInterface
        public void changeActivity()
        {
            Intent i = new Intent(JavascriptInterfaceActivity.this, nextActivity.class);
            startActivity(i);
            finish();
        }
    }
}

Вот HTML-страница

<html>
<head>
<script type="text/javascript">
function displaymessage()
{
JSInterface.changeActivity();
}
</script>
</head>

<body>
<form>
<input type="button" value="Click me!" onclick="displaymessage()" />
</form>
</body>
</html>

Надеюсь это поможет..

 Common09 мая 2012 г., 20:32
Спасибо, мой друг . это почти помогло мне решить мою проблему.
 McLan08 сент. 2016 г., 16:54
У меня есть один вопрос, куда поместить HTML-страницу?
 Android Killer04 апр. 2013 г., 15:04
@ Common Я должен взять приведенный выше HTML-код в отдельном HTML-файле?
 Tony_craft31 мар. 2014 г., 11:14
Это полезно для вызова функций Android из JavaScript, но есть ли способ вызвать функции JavaScript из кода Android?
 Mohini21 нояб. 2014 г., 12:35
где находится этот HTML-файл?

Ваш ответ на вопрос