首先需要编写一个CallActivityPlugin插件,专门调用Activity

  1. package com.example.plugin;
  2. import org.apache.cordova.api.CallbackContext;
  3. import org.apache.cordova.api.CordovaPlugin;
  4. import org.apache.cordova.api.PluginResult;
  5. import org.json.JSONArray;
  6. import org.json.JSONException;
  7. import android.app.Activity;
  8. import android.content.Intent;
  9. import android.os.Bundle;
  10. import android.util.Log;
  11. public class CallActivityPlugin extends CordovaPlugin {
  12. public static final String ACTION = "call";
  13. @Override
  14. public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
  15. if (action.equals(ACTION)) {
  16. try {
  17. //下面两句最关键,利用intent启动新的Activity
  18. Intent intent = new Intent().setClass(cordova.getActivity(), Class.forName(args.getString(0)));
  19. this.cordova.startActivityForResult(this, intent, 1);
  20. //下面三句为cordova插件回调页面的逻辑代码
  21. PluginResult mPlugin = new PluginResult(PluginResult.Status.NO_RESULT);
  22. mPlugin.setKeepCallback(true);
  23. callbackContext.sendPluginResult(mPlugin);
  24. callbackContext.success("success");
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. return false;
  28. }
  29. }
  30. return true;
  31. }
  32. //onActivityResult为第二个Activity执行完后的回调接收方法
  33. @Override
  34. public void onActivityResult(int requestCode, int resultCode, Intent intent){
  35. switch (resultCode) { //resultCode为回传的标记,我在第二个Activity中回传的是RESULT_OK
  36. case Activity.RESULT_OK:
  37. Bundle b=intent.getExtras();  //data为第二个Activity中回传的Intent
  38. String str=b.getString("change01");//str即为回传的值
  39. break;
  40. default:
  41. break;
  42. }
  43. }
  44. }

然后配置CallActivityPlugin插件res/xml/config.xml

  1. <plugin name="CallActivityPlugin" value="com.example.plugin.CallActivityPlugin"/>

接着利用js调用插件(callActivity.js)

  1. window.callActivityPlugin = function(str,callback) {
  2. cordova.exec(callback, pluginFailed, "CallActivityPlugin", "call", [ str ]);
  3. };
  4. var pluginFailed = function(message) {
  5. alert("failed>>" + message);
  6. }
  7. $(function() {
  8. init();
  9. });
  10. var init = function() {
  11. console.log("phonegap init!!");
  12. document.addEventListener("deviceready", onDeviceReady, true);
  13. }
  14. var onDeviceReady = function() {
  15. console.log("deviceready event fired");
  16. window.callActivityPlugin("com.example.activity.MyActivity" , function(echoValue) {
  17. console.log("callActivityPlugin echo>>");
  18. });
  19. };

最后html页面加载(相对简单)

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Device Properties Example</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <script type="text/javascript" charset="utf-8" src="../js/jquery-1.8.3.js"></script>
  7. <script type="text/javascript" charset="utf-8" src="../js/cordova-2.3.0.js"></script>
  8. <script type="text/javascript" charset="UTF-8" src="../js/callActivity.js"></script>
  9. </head>
  10. <body>
  11. <p id="callActivityPlugin">callActivityPlugin</p>
  12. <a href="../index.html">返回</a>
  13. </body>
  14. </html>

新的Activity代码(相对简单)

  1. package com.example.activity;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.net.Uri;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;
  11. import com.example.ask.R;
  12. public class MyActivity extends Activity {
  13. private Button btn;
  14. private int flag = 0;
  15. private Intent intentNew = null;
  16. private Context context = this;
  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.my_activity_main);
  21. intentNew = this.getIntent();
  22. btn = (Button) findViewById(R.id.button1);
  23. btn.setOnClickListener(new OnClickListener() {
  24. public void onClick(View v) {
  25. Intent mIntent = new Intent();
  26. mIntent.putExtra("change01", "1000");
  27. mIntent.putExtra("change02", "2000");
  28. // 设置结果,并进行传送
  29. setResult(RESULT_OK, mIntent);
  30. finish();
  31. }
  32. });
  33. }
  34. }

Cordova调用Activity的更多相关文章

  1. Android 平台下Cordova 调用Activity插件开发

    首先建立一个包名为package com.JiajiaCy.CallActivity; package com.JajaCy.CallActivity; import org.apache.cordo ...

  2. Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例

    引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用 ...

  3. 十分钟开发一个调用Activity的PhoneGap插件

    在HybridApp开发中,非常多业务我们是没有办法通过HTML5+js实现的,比方调用第三方的包括Activity的jar包,一些必须使用原生代码才干实现的功能,比方复杂的UI的效果,调用通讯相关的 ...

  4. 请阐述调用Activity有哪几种方法,并写出相关的Java代码

    请阐述调用Activity有哪几种方法,并写出相关的Java代码. 答案:可以采用两种方式调用Activity:显示调用和隐式调用.显示调用直接指定了Activity,代码如下: Intent int ...

  5. cordova调用本地SQLite数据库的方法

    第一篇技术博客,写下来和大家分享今天所学,其次自己也巩固一下. 整个下午的时间用来钻研如何用cordova调用移动端本地SQLite数据库.首先我并不是用eclipse来编程的,而是用cordova建 ...

  6. Android 开发笔记(一) 按钮事件调用Activity

    UI创建按钮及事件 Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);mEmailSignInB ...

  7. 如何在adapter 中调用activity的方法

    如何在adapter 中调用activity的方法 2015-08-07 17:06匿名 | 浏览 808 次  iWorkjavaAndroid public class HistoryData e ...

  8. cordova调用第三方应用

    cordova 帮助webapp 达到调用原生系统的功能 项目需求:在项目中调用系统中含有的第三方地图应用 需求其实分为两步: 1. 查找本地地图应用 2.成功调起本地应用 首先需要安装两个插件,安装 ...

  9. andriod fragment调用Activity函数方法

    (1)新增一个activity public MainActivity getMainActivity(); } (2)在MainActivity 的Java文件中增加 getMainActivit公 ...

随机推荐

  1. What are the 10 algorithms one must know in order to solve most algorithm challenges/puzzles?

    QUESTION : What are the 10 algorithms one must know in order to solve most algorithm challenges/puzz ...

  2. Ubuntu 改变workspace布局

    今天花了点时间找ubuntu的workspace布局.发现一个软件,tweak, 非常好用,可以随意调整布局. Ref: http://ubuntuhandbook.org/index.php/201 ...

  3. 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门

    喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉得独立博客的管 ...

  4. 学习iOS的一些网站收藏

    1,CocoaChina:http://www.cocoachina.com/ 2,Code4App:http://code4app.com/ 3,梦维:http://www.dreamingwish ...

  5. Linux下解决“shutdown: command not found"问题

    今天关机时,使用shutdown来执行此操作,但出现了一个"bash:shutdown:command not found"错误提示.这让我很困惑,这个命令在系统中是肯定存在的,但 ...

  6. Spring MVC 使用拦截器优雅地实现权限验证功能

    在上一篇 SpringAOP 实现功能权限校验功能 中虽然用AOP通过抛异常,请求转发等勉强地实现了权限验证功能,但感觉不是那么完美,应该用拦截器来实现才是最佳的,因为拦截器就是用来拦截请求的,在请求 ...

  7. 工作中遇到的问题--使用DTO减少数据字段

    Location中包含如下字段以及AMfgObject中关于创建信息的字段,然而有时使用并不需要传输那么多数据,则对其中字段进行过滤. @Entity@Table(name = "LOCAT ...

  8. HDU-4035 Maze (概率DP求期望)

    题目大意:在一个树形迷宫中,以房间为节点.有n间房间,每间房间存在陷阱的概率为ki,存在出口的概率为ei,如果这两种情况都不存在(概率为pi),那么只能做出选择走向下一个房间(包括可能会走向上一个房间 ...

  9. C语言 a和&a的区别

    节选自<C语言深度剖析> 首先看个例子 main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d ...

  10. js里的原型

    <script type="text/javascript"> function People(name){ this.name = name; //对象方法 this ...