cordova 插件调用activity和结果返回
2017-03-13 08:55
323 查看
某些插件,需要你开启另一个activity,然后返回cordova的activity,并得到结果。
下面是两种情形:
说明:这个方法是继承CordovaPlugin基类后的cordova成员变量的方法。用法和普通的activity一样,只不过第一个参数必须为 CordovaPlugin 或者其子类。
第二步:
在 插件类中重写下面的方法, 在这个方法中可以得到结果。
Other otherObject = new Other(cordova.getActivity()); //传入context,other类调用了跳转activity的方法
插件类调用 cordova.setActivityResultCallback(CordovaPlugin plugin);//设置返回结果时调用此插件中的onActivityResult方法
在插件类中重写方法:onActivityResult(int requestCode, int resultCode, Intent intent)
查看cordova 发送结果回调的实现:
所以用下面的方法可以反复通知js层,使得js层获得信息。
下面是两种情形:
一、 直接在插件类中使用 跳转activity
第一步:public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode);
说明:这个方法是继承CordovaPlugin基类后的cordova成员变量的方法。用法和普通的activity一样,只不过第一个参数必须为 CordovaPlugin 或者其子类。
第二步:
在 插件类中重写下面的方法, 在这个方法中可以得到结果。
@Override public void onActivityResult(int requestCode, int resultCode, Intent intent)
二、插件类中使用了另一个other类,传入了context参数后,other跳转activity
此时,如果想要activity返回结果还是在插件类中得到。则步骤是:Other otherObject = new Other(cordova.getActivity()); //传入context,other类调用了跳转activity的方法
插件类调用 cordova.setActivityResultCallback(CordovaPlugin plugin);//设置返回结果时调用此插件中的onActivityResult方法
在插件类中重写方法:onActivityResult(int requestCode, int resultCode, Intent intent)
cordova 结果回调重复调用
另外,比如做一个搜索蓝牙的插件,由于结果不是一次性给出的,可能隔一会就搜到一个蓝牙设备,需要把结果传给js层,此时如果直接反复去调用mCallbackContext.success(“device:”+name);或者mCallbackContext.error(“失败”);会报错。查看cordova 发送结果回调的实现:
public void sendPluginResult(PluginResult pluginResult) { synchronized (this) { if (finished) { Log.w(LOG_TAG, "Attempted to send a second callback for ID: " + callbackId + "\nResult was: " + pluginResult.getMessage()); return; } else { finished = !pluginResult.getKeepCallback(); } } webView.sendPluginResult(pluginResult, callbackId); }
所以用下面的方法可以反复通知js层,使得js层获得信息。
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK,"中间消息"); pluginResult.setKeepCallback(true); callbackContext.sendPluginResult(pluginResult);
相关文章推荐
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- Android进阶03——调用另一个Activity并返回结果
- Cordova插件调用Android原生Activity
- 调用另一个Activity并返回结果
- 调用Activity返回结果
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- 调用一个Activity并返回结果
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- 使用Bundle在Activity之间交换数据、调用另一个Activity并返回结果
- (8)调用Fragment自身的startActivityForResult并在Fragment中接收返回结果
- Cordova插件调用Android原生Activity修改其样式及背景
- Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- Activity调用另一Activity并返回结果
- 调用一个Activity并返回结果
- 解决Android中Fragment调用startactivityforresult不能返回结果的问题
- Cordova通过CordovaPlugin插件调用 Activity
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集