java - appView.addJavascriptInterface() 不适用于 API 17

标签 java javascript android cordova

我可以从我的 phonegap java 脚本函数和 android 2.2 中使用 java 函数 但相同的代码未在 API 17 上运行。我应该怎么做才能从 API 17 中的 java 脚本调用 native java 代码。

我在我的 java 文件中使用此代码

 objCustomNativeAccess = new CustomNativeAccess(this, appView);
            appView.addJavascriptInterface(objCustomNativeAccess,
                    "CustomNativeAccess");
    super.loadUrl("file:///android_asset/www/index.html");

我的 CustomNativeAccess 类是

public class CustomNativeAccess {
        private WebView mAppView;
        private DroidGap mGap;

        /**
         * Constructor
         * 
         * @param gap
         * @param view
         */
        public CustomNativeAccess(DroidGap gap, WebView view) {
            mAppView = view;
            mGap = gap;
        }

        /**
         * Get the device phone number
         * 
         * @return
         */
        public JSONObject login(String email, String password) {
            JSONObject object = new JSONObject();
                    object.put("Login_Status", login_status);
            object.put("date", dateString);
            return object;
        }

在我的 java 脚本中,我使用这一行来调用这个登录函数

 var value = window.CustomNativeAccess.login(email,pass);

所以使用它我在 api 2.2 上成功调用了它,但是当我在 api 17 上运行此代码时,它给了我错误

Uncaught TypeError: Object [object Object] has no method 'login' at file:///android_asset/www/index.html:81

我如何在 api 17 上使用它

最佳答案

在 API 17 上你必须做的是用 @JavascriptInterface 注释你的方法:

public class CustomNativeAccess {
   @JavascriptInterface

然后去掉构造函数部分:

/*private WebView mAppView;
    private DroidGap mGap;
    public CustomNativeAccess(DroidGap gap, WebView view) {
        mAppView = view;
        mGap = gap;
    }
*/

还要确保在项目中导入 JavascriptInterface:

 import android.webkit.JavascriptInterface;

您可以在此处了解更多信息: WebView Android

编辑:您必须在类中使用@JavascriptInterface 注释您希望从 Javascript 访问的每个方法。

关于java - appView.addJavascriptInterface() 不适用于 API 17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353430/

相关文章:

java - NullPointerException Logcat 错误 Android

java - 如何查询在 Parse 中设置为指向其他表的指针的列的值

java - 创建运行时特定于类的寄存器系统的最佳方法?

javascript - 如何从两个日期选择器中减去天数?

javascript - 有没有办法在 Rails 4 的 Coffeescript/Javascript 中使用 ActionView Helpers?

android - 无法运行 Eclipse 项目 - 找不到 API 数据库

java - 智能逻辑查询 PostgreSQL 函数内部的性能

java - 如何使用不在接口(interface)接口(interface)中的方法 i = new class();

java - Netbeans 项目不与 Maven 一起运行

javascript - 在 wordpress 中排队内置 jquery-ui 脚本时遇到问题