gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:44:48 26 4
gpt4 key购买 nike

我可以从我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com