phonegap android插件,启动activity并返回值
- Your execute menthod is not quite right. When you do:
- return new PluginResult(PluginResult.Status.OK,resultFunction);
- that effectively returns nothing as a result. Instead you need to do:
- PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT);
- r.setKeepCallback(true);
- return r;
- which will tell the JS layer that there is info coming soon. Then in
- your onActivityResult method you need to call:
- this.success(new PluginResult(PluginResult.Status.OK, msg), this.callbackId);
- and you should get your result correctly.
- Check out the:
有问题的代码,参考上面修改
- Hi,
- i'm trying to pass a value from my Android java plugin to javascript in index.html.
- This is my code :
- PluginWrapper.js
- var PluginWrapper = function() {
- };
- PluginWrapper.prototype.crop = function (name, win, fail){
- console.log("Prima di execute!");
- return PhoneGap.exec(win,fail,"PluginWrapper","crop",[name]);
- };
- PhoneGap.addConstructor(function() {
- PhoneGap.addPlugin('PluginWrapper',new PluginWrapper());
- });
- PluginWrapper.java
- package it.Prova;
- import org.json.JSONArray;
- import com.phonegap.api.Plugin;
- import com.phonegap.api.PluginResult;
- import android.content.Intent;
- import android.util.Log;
- public class PluginWrapper extends Plugin{
- private String resultFunction = null;
- @Override
- public PluginResult execute(String arg0, JSONArray arg1, String arg2) {
- Log.v("PLUGIN","PLUGIN EXECUTE");
- Start("");
- return new PluginResult(PluginResult.Status.OK,resultFunction);
- }
- public String Start(String name){
- Log.v("START","START");
- Intent intent = new Intent(this.ctx,PluginActivity.class);
- this.ctx.startActivityForResult((Plugin) this, intent, );
- return "OK";
- }
- public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- super.onActivityResult(requestCode, resultCode, intent);
- if (requestCode == ){
- String msg = intent.getStringExtra("returnedData");
- Log.v("FLAG","IN WRAPPER " + msg);
- resultFunction = msg;
- }
- }
- }
- PluginActivity.java
- package it.Prova;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.widget.Button;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- public class PluginActivity extends Activity{
- private Button btn;
- private int flag = ;
- private Intent intentNew = null;
- private Context context = this;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- intentNew = this.getIntent();
- btn = (Button) findViewById(R.id.button1);
- btn.setOnClickListener(new OnClickListener(){
- public void onClick(View v) {
- flag = ;
- Log.v("FLAG","1 IN PLUGIN");
- intentNew.putExtra("returnedData", Integer.toString(flag));
- if (getParent() == null) {
- setResult(RESULT_OK, intentNew);
- }
- else {
- getParent().setResult(RESULT_OK, intentNew);
- }
- finish();
- }
- });
- }
- }
- index.html
- <!DOCTYPE HTML>
- <html>
- <head>
- <title>PhoneGap</title>
- <script type="text/javascript" charset="utf-8" src="phonegap-1.3.0.js"></script>
- <script type="text/javascript" charset="utf-8" src="PluginWrapper.js"></script>
- <script type="text/javascript" charset="utf-8">
- function onLoad(){
- document.addEventListener("deviceready", onDeviceReady, true);
- }
- function onDeviceReady() {
- //alert("OK");
- }
- function getStart() {
- //window.plugins.PluginWrapper.crop("",function(r){console.log("Value in javascript " + r);},
- // function(e){console.log("NO");}
- // );
- var a = "vuoto";
- a = window.plugins.PluginWrapper.crop("");
- console.log("a = " + a);
- }
- </script>
- </head>
- <body onload="onLoad()">
- <h1>Hello World</h1>
- <button onclick="getStart();">Start</button> <br>
- </body>
- </html>
- Attach the source code!
- Best regards,
- akus85
继承CordovaPluging的代码,Pluging继承CordovaPluging
- public class WXPayPlugin extends CordovaPlugin {
- public static final String ACTION = "call";
- private CallbackContext _callbackContext=null;
- @Override
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- if (action.equals(ACTION)) {
- try {
- //下面两句最关键,利用intent启动新的Activity
- Intent intent = new Intent().setClass(cordova.getActivity(), Class.forName(args.getString()));
- this.cordova.startActivityForResult(this, intent, );
- _callbackContext=callbackContext;
- //下面三句为cordova插件回调页面的逻辑代码
- PluginResult mPlugin = new PluginResult(PluginResult.Status.NO_RESULT);
- mPlugin.setKeepCallback(true);
- callbackContext.sendPluginResult(mPlugin);
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- return true;
- }
- //onActivityResult为第二个Activity执行完后的回调接收方法
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent intent){
- switch (resultCode) { //resultCode为回传的标记,我在第二个Activity中回传的是RESULT_OK
- case Activity.RESULT_OK:
- Bundle b=intent.getExtras(); //data为第二个Activity中回传的Intent
- String str=b.getString("change01");//str即为回传的值
- _callbackContext.success(str);
- break;
- default:
- _callbackContext.error("fail");
- break;
- }
- }
- }
phonegap android插件,启动activity并返回值的更多相关文章
- 【Android】12.3 在当前Activity中获取另一个Activity的返回值
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...
- Android app启动activity并调用onCreate()方法时都默默地干了什么?
Android app启动activity并调用onCreate() 方法时都默默地干了什么? 在AndroidManifest.xml文件中的<intent-filter>元素中有这 ...
- Android开机启动Activity或者Service方法
本文出自 “Bill_Hoo专栏” 博客,请务必保留此出处http://billhoo.blog.51cto.com/2337751/761230 这段时间在做Android的基础开发,现在有一需求是 ...
- Android开机启动Activity或者Service方法(转载)
这段时间在做Android的基础开发,现在有一需求是开机启动,按照网上某些博文教程做了下,始终不成功,一开机总是提示所启动的应用程序意外终止,于是参考了Android SDK doc,终于解决问题,下 ...
- activity 接回返回值
activity 接回返回值 今天做订单列表显示 点击某一项显示订单详细信息,在详细activity中用户可以选择取消订单(未支付的状态下)当用户取消订单后订单列表也要改变状态,原来最初做法是所加载绑 ...
- Android - 和其他APP交互 - 获得activity的返回值
启用另一个activity不一定是单向的.也可以启用另一个activity并且获得返回值.要获得返回值的话,调用startActivityForResult()(而不是startActivity()) ...
- Android课程---Activity 带返回值的跳转
Activity2.java package com.hanqi.test4; import android.content.Intent; import android.os.Bundle; imp ...
- Activity详解三 启动activity并返回结果
首先看演示: 1 简介 .如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int ...
- Android 外部启动activity,自定义action,action常量大全
从任意app,启动另外一个app的activity: 1. Intent i = new Intent(); ComponentName cn = new ComponentN ...
随机推荐
- VBA 编写类
一.初识类 现在,请打开你的VBE,主菜单-插入-类模块. 插入了一个类模块,也就建立了一个类.类模块的名字就是类的名字.你现在看到的,她的名字叫“类1”,这是VBA按她姐妹排行给她取的的,是的,VB ...
- VBA 判断单元格是否为公式,可用于数组
Function ISFORMULA(ByVal rg As Object) As Variant Dim temp As Variant Dim i As Integer, j ...
- ABAP-SET UPDATE TASK LOCAL
SET UPDATE TASK LOCAL 影响 切换本地更新任务.这意味着当您指定 CALL FUNCTION ... IN UPDATE TASK时,更新数据不会存储在数据库中,而是存储在ABA ...
- 用R包来下载sra数据
1)介绍 我们用SRAdb library来对SRA数据进行处理. SRAdb 可以更方便更快的接入 metadata associated with submission, 包括study, sa ...
- Java8 Stream语法详解 2
1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...
- 用NBU无法还原数据库到ASM磁盘
描述:用NBU无法还原数据库到ASM磁盘,却可以还原到数据库本地磁盘 错误提示: ORA-15025: could not open disk "/dev/mapper/DATA1" ...
- Mysql两个time类型计算时间相减
round((UNIX_TIMESTAMP(finishtime)-UNIX_TIMESTAMP(starttime))/60) 得到的时间是分钟数
- sql批量修改字段内容的语句-SQL技巧
--update '表名' set 要修改字段名 = replace (要修改字段名,'被替换的特定字符','替换成的字符')--update tRecord set columnName = rep ...
- iOS - OC - 打印信息 - xcode 中文打印
#import <Foundation/Foundation.h> @implementation NSDictionary (Log) //重写系统的方法控制输出 -(NSString ...
- handler------post传送方式
package com.qianfeng.gp08_day26_hanlder2; import android.os.Bundle; import android.os.Handler; impor ...