Android:如何使用javascript界面显示toast?

Android:如何使用javascript界面显示toast?,javascript,android,webview,Javascript,Android,Webview,我想从webview中显示的网页中显示toast,如Google的示例所示: 我已经为此创建了一个名为WebAppInterface.java的类: 包com.test.test import android.annotation.TargetApi; import android.app.ActionBar; import android.os.Bundle; import android.content.Context; import android.os.Build; import and

我想从webview中显示的网页中显示toast,如Google的示例所示:

我已经为此创建了一个名为WebAppInterface.java的类:

包com.test.test

import android.annotation.TargetApi;
import android.app.ActionBar;
import android.os.Bundle;
import android.content.Context;
import android.os.Build;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NavUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.Color;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings;
import android.webkit.WebChromeClient;
import android.webkit.JavascriptInterface;
import android.app.Activity;
import android.view.KeyEvent;
import android.app.ProgressDialog;
import android.view.Window;
import android.widget.Toast;
import com.test.test.R;

public class WebAppInterface extends Activity{
    Context mContext;

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

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}
下面是我的主要活动代码MainActivity.java:

web视图加载的页面包含以下代码:

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

<script type="text/javascript">
    function showAndroidToast(toast) {
        Android.showToast(toast);
    }
</script>
我完全按照Google示例中的说明进行操作,但它不起作用。。。为什么?

谢谢

使用

myWebView.addJavascriptInterface(new JsObject(), "Android");
在javascript中,变量Android将可用。您在注册Javascript接口时使用的是injectedObject

使用

在javascript中,变量Android将可用。您在注册Javascript接口时使用的是injectedObject


JsObject不应该是WebAppInterface吗?我相信它可以是任何Java类对象引用。名称并不重要,但这就是OP用@JSInterface showtoos调用的类。JSObject没有任何有用的方法。正确,它必须有方法实现来调用toast,然后从JS调用toast。JSObject不应该是WebAppInterface吗?我相信它可以是任何Java类对象引用。名称不重要,但这就是OP所称的带有@JSInterface showtoos的类。JSObject没有任何有用的方法。正确,它必须有方法实现来调用toast,然后从JS调用toast。
myWebView.addJavascriptInterface(new JsObject(), "Android");