viv*_*ari 21 javascript java android cordova
我可以使用我的phonegap java脚本函数和android 2.2中的java函数,但是相同的代码不能在API 17上运行.我应该怎么做才能从API 17中的java脚本调用本机java代码.
我在我的java文件中使用此代码
objCustomNativeAccess = new CustomNativeAccess(this, appView);
appView.addJavascriptInterface(objCustomNativeAccess,
"CustomNativeAccess");
super.loadUrl("file:///android_asset/www/index.html");
Run Code Online (Sandbox Code Playgroud)
我的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;
}
Run Code Online (Sandbox Code Playgroud)
在我的java脚本中,我使用此行来调用此登录函数
var value = window.CustomNativeAccess.login(email,pass);
Run Code Online (Sandbox Code Playgroud)
所以使用这个我在api 2.2上成功调用了这个,但是当我在api 17上运行这个代码时它给了我错误
未捕获的TypeError:对象[object Object]在file:///android_asset/www/index.html上没有方法'login':81
我如何在api 17上使用它
ben*_*nka 39
您在API 17上要做的是使用@JavascriptInterface注释您的方法:
Public class CustomNativeAccess {
@JavascriptInterface
Run Code Online (Sandbox Code Playgroud)
然后摆脱构造函数部分:
/*private WebView mAppView;
private DroidGap mGap;
public CustomNativeAccess(DroidGap gap, WebView view) {
mAppView = view;
mGap = gap;
}
*/
Run Code Online (Sandbox Code Playgroud)
还要确保在项目中导入JavascriptInterface:
import android.webkit.JavascriptInterface;
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读更多内容:http: //developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29
编辑:您必须使用您希望从Javascript访问的类中的@JavascriptInterface注释每个方法.
| 归档时间: |
|
| 查看次数: |
28748 次 |
| 最近记录: |