从AngularJS控制器调用Android函数
Calling an Android function from AngularJS controller
我有一个问题,需要一些帮助。我正试图通过在前端使用角度控制器来调用一个android功能,但我无法让它工作。
主要活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView)findViewById(R.id.activity_main_webview);
mWebView.setWebViewClient(new CustomWebViewClient());
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new AngularJSInterface(this), "Android");
mWebView.loadUrl("http://192.168.70.101:3000/");
}
AngularJS接口:
public class AngularJSInterface {
Context mContext;
AngularJSInterface(Context c) {
mContext = c;
}
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
角度控制器:
angular.module('app').controller('ComplaintCtrl', function ($scope, $http, complaintService) {
$scope.showToast = function(toast) {
Android.showToast(toast);
console.log("toast");
}
});
HTML:
<button label="toast" ng-click="showToast('Visar toast från angularJS')">toast</button>
控制台错误:
ReferenceError: Android is not defined
at Scope.$scope.showToast (http://localhost:3000/scripts/controllers/addcomplaint.js:34:3)
at http://localhost:3000/bower_components/angular/angular.js:10567:21
at http://localhost:3000/bower_components/angular-touch/angular-touch.js:438:9
at Scope.$eval (http://localhost:3000/bower_components/angular/angular.js:12412:28)
at Scope.$apply (http://localhost:3000/bower_components/angular/angular.js:12510:23)
at HTMLButtonElement.<anonymous> (http://localhost:3000/bower_components/angular-touch/angular-touch.js:437:13)
at HTMLButtonElement.jQuery.event.dispatch (http://localhost:3000/bower_components/jquery/dist/jquery.js:4409:9)
at HTMLButtonElement.elemData.handle (http://localhost:3000/bower_components/jquery/dist/jquery.js:4095:28)
这是我第一次使用这种东西,我不太确定该怎么做。我试过通过谷歌搜索来寻找答案,但没有成功。我做错了什么?
将toast函数更改为static并直接调用它,或者先实例化它。并且,您没有名为Android
的类,而是创建了AngularJSInterface
。将Android.showToast
更改为AngularJSInterface.showToast
(如果使用静态)。
相关文章:
- 在phonegap中为android调用onload函数的最佳方式
- 从javascript中调用的Android函数中获取值,并将其返回给js
- Uncaught ReferenceError:尝试在Android网络视图中访问时未定义函数
- 如何使用phonegap插件从android调用javascript函数
- 可以't从android手机调用全局javascript函数
- 使用 Android Webview 覆盖当前的 Javascript 函数
- Javascript函数在android webview中没有被调用
- Android :如何调用 Cordova(WebView) loadUrl 函数
- 如何从 java 代码 android native 调用 JavaScript 函数
- Android webview:向复选框的onclick事件注入函数调用
- .click android WebView 中的 JavaScript 函数
- 从Flash AS3 Android应用程序调用Java脚本函数以检索设备ID和序列号
- Android:调用 JavaScript 函数时出现问题
- Android & Javascript - 从两个函数到一个函数
- Android PhoneGap 1.7 调用 javascript 函数
- 将函数从java(Android)移植到AngularJs
- 从 JavaScript over Android WebView 调用 Java 函数
- 从AngularJS控制器调用Android函数
- 如何从phonegap HTML页面调用Android函数
- 如何从Javascript调用原生Iphone/Android函数