JavaScript没有使用addJavascriptInterface在Android中调用方法

时间:2014-01-18 15:55:11

标签: java javascript android webview

我搜索过高低,发现了很多这样的例子,但无法让它工作,我的设置目前是:

Notifier.java

public class Notifier{  
    Context mContext;

    Notifier(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void showText()  
    {   
        Toast.makeText(mContext, "Some text!", Toast.LENGTH_LONG).show();
    }
}

SearchLicenseActivity.java

public class SearchLicenseActivity extends Activity {
    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_license);

        LoadSearch();
    }

    public void LoadSearch(){
        webView = (WebView)findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);   
        webView.addJavascriptInterface(new Notifier(this), "Android");
        webView.loadUrl("javascript:Android.showText();");
    }
}

所以我期待着Toast展示。值得注意的是,当单击上一个Activity上的按钮时,会创建此SearchActivity;所以我希望它能够立即执行LoadSearch并从JavaScript中获取Toast。

我希望你们中的一个能解决我的困境!

编辑:我也没有在LogCat中收到任何错误。

1 个答案:

答案 0 :(得分:0)

好的,事实证明webView必须加载一个网页。

即使网址是"关于:空白"这似乎有效。所以......

webView.loadUrl("about:blank");
webView.loadUrl("javascript:Android.showText();");

...作品。