我能够从我的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上运行此代码时给了我错误
未捕获的TypeError:对象[object Object]在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
编辑:您必须在要从Javascript访问的类中使用@JavascriptInterface注释每个方法。