- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我可以从我的 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/
我正在尝试实例化 Backbone Collection View 的最基本版本,但 Backbone 告诉我我的 appView (DictionaryView();) 不是一个函数。我仔细研究了它
我想使用 phonegap cordova 在 android 中构建 native 应用程序。我找到了 2 种方法让我的 html 文件可以与我的 java 文件通信。我可以使用 appView.a
我可以从我的 phonegap java 脚本函数和 android 2.2 中使用 java 函数但相同的代码未在 API 17 上运行。我应该怎么做才能从 API 17 中的 java 脚本调用
对于 PhoneGap 应用程序,如说明所述,我已将 setContentView() 行替换为 super.loadUrl("file:///android_asset/www/index.html
我在从适用于 Android (5.0.0) 的最新 Cordova 版本访问 appView 时遇到了真正的麻烦。 例如,假设我想在我的应用程序中添加一个 Javascript 界面。在这个版本之前
我在将 View 从主 Django 项目views.py 导入到我的应用程序的views.py 时遇到问题。 这就是发生的事情: ImportError: cannot import name 'i
我正在使用 Google Analytics 3.0.9 iOS SDK 开发我的 iPhone 应用程序。我发现 idfa 存在一些问题。因此,我按照 Answer 的建议迁移到 3.0.3c .
由于在 Android Cordova 5.1.1 CordovaWebView 中无法正常工作,我曾尝试过 WebView wV = (WebView)appView.getEngine().get
我正在尝试通过 iOS 上的 Google 跟踪代码管理器让 GA Screens 正常工作。我已将 GTM 标签配置为跟踪类型 App View,我可以看到事件即将到来,但屏幕名称始终是(未设置)
我最近将我的应用程序更新到 cordova 5.1,但我无法从 JS 发出网络请求。 编译过程中唯一的问题是在扩展 CordovaActivity 的类的 onCreate 函数中 我曾经这样做过 s
我是一名优秀的程序员,十分优秀!