一、PhoneGap中js与Java之间相互调用分为同步和异步两种方式
1、同步:js调用Java类的方法,然后Java类的方法直接返回一个值给js端
2、异步:js调用Java类的方法,Java类的方法可能要处理一系列的事情。执行完后,通过回调把结果返回js端。
二、下面以Android为例,通过插件实现js调用java类中的方法
1.创建cordova 工程
2. 在Android Studio打开
3. 在Index.html
1
|
<button id=
"showToast"
>Show Toast</button>
|
4. 在Index.js中加入插件执行方法
1
|
exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
|
在onDeviceReady中加入
1
|
document.getElementById(
"showToast"
).addEventListener(
"click"
,app.showToast);
|
showToast方法就是调用插件的方法
1
2
3
4
5
6
7
8
|
showToast:
function
(){
cordova.exec(
function
(){},
function
(){},
"Toast"
,
"show"
,
[
"hello man"
]);
},
|
5. 创建插件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
class
MyToast
extends
CordovaPlugin{
@Override
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException {
if
(
"show"
.equals(action)){
show(args, callbackContext);
}
return
super
.execute(action, args, callbackContext);
}
public void show(JSONArray args, CallbackContext callbackContext){
try
{
Toast.makeText(cordova.getActivity(),args.getString(0), Toast.LENGTH_LONG).show();
}
catch
(JSONException e){
e.printStackTrace();
}
callbackContext.success();
}
}
|
1
|
继承CordovaPlugin, 并实现execute方法。 action对应exec的第四个参数
|
6. xml中config.xml配置
1
2
3
|
<feature name=
"Toast"
>
<param name=
"android-package"
value=
"com.example.tostplugin.MyToast"
/>
</feature>
|
Toast对应exec的第三个参数, value值com.example.tostplugin.MyToast 为插件的包名。
7. 效果图
本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/p/7081147.html,如需转载请自行联系原作者