首先需要编写一个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. 如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗?

    如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗? ----答案是 可以 原因: 在hashmap中,由于key是不可以重复的,他在判断key是不是重复的时候就判断了h ...

  2. 标准IO操作

    前言 本文介绍使用java进行简单的标准IO操作. 操作步骤 1. 定义一个Scanner对象 2. 调用该对象的input函数族 (参见下面代码) 3. input函数的返回结果即是获取到的输入 示 ...

  3. win7建立无线wifi热点的几个常见的问题

    命令行开启WiFi方法: 开启WiFi.bat netsh wlan set hostednetwork mode=allow netsh wlan set hostednetwork ssid=ss ...

  4. Sprint第二个冲刺(第七天)

    一.Sprint 计划会议: 现在简单的说下今天的会议情况:组员们除了完善之前做的功能,还打算实现把轮播图迁移到一个fragment中,方便管理.现在也准备着手实现商家上传商品的图片这个功能,虽说现在 ...

  5. Codeforces Round #303 (Div. 2) D 贪心

    D. Queue time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  6. Html与CSS布局技巧

    一.单列布局 1.水平居中:(注:下面各个实例中实现的是child元素的对齐操作,child元素的父容器是parend元素) 1-1:使用inline-block和text-align实现: .par ...

  7. python 文件编码

    错误:UnicodeDecodeError: 'gbk' codec can't decode byte 原因:文件为utf-8编码,系统却用gbk去解码,必然出现错误. 解决方法: with ope ...

  8. jqueryflot图表x轴坐标过长完美解决方案(转)

    近段时间,项目中使用到了flot这个图表工具,在实际使用的过程中,遇到了一个看似很简单的问题:当坐标的刻度如果过长时,会重叠在一起,影响阅读: 看到这个效果后的第一反应就是,能不能让坐标斜着显示啊?去 ...

  9. poj3553 拓扑序+排序贪心

    题意:有多个任务,每个任务有需要花费的时间和最后期限,任务之间也有一些先后关系,必须先完成某个才能开始某个,对于每个任务,如果没有越期,则超时为0,否则超时为结束时间-最后期限,求总超时时间最小的任务 ...

  10. 附录二 C语言标准库

    上章回顾 数组和指针相同与不同 通过指针访问数组和通过数组访问指针 指针在什么时候可以加减运算 函数指针的申明和调用 函数数组和数组函数 git@github.com:Kevin-Dfg/Data-S ...