如何使用@JavascriptInterface显示Toast类的消息?

时间:2015-08-24 04:29:16

标签: android

我希望在WebView环境中获取并显示来自服务器的文本,并且使用WebView类在Toast我想要显示相同消息的消息中获取消息。我编写了以下代码但它没有显示Toast类的文本。

<?php

echo "Hello";

?>

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //WebView Object
        WebView browser;
        browser = (WebView) findViewById(R.id.webView);
        //Enable Javascript
        browser.getSettings().setJavaScriptEnabled(true);
        //Inject WebAppInterface methods into Web page by having Interface name 'Android'
        browser.addJavascriptInterface(new WebAppInterface(this), "Android");
        //Load URL inside WebView
        String s = "http://127.0.0.1:8080/apps/webview.php";

        browser.loadUrl(s);
    }
    public class WebAppInterface {
        Context mContext;

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

        /**
         * Show Toast Message
         * @param toast
         */
      @JavascriptInterface
        public void showToast(String toast) {
            Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
        }
}}

1 个答案:

答案 0 :(得分:1)

您必须致电Android.showToast("hello")

Android 是您Javascript Interface的名称。然后使用它,您可以调用showToast()函数

修改

调用JavaScript函数

<script>
    function showMessage(msg) {
        Android.showToast(msg);
    }
</script>