首先需要编写一个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. invoke Javascript from C# code

    http://justyouraveragegeek.com/blog/index.php/2010/03/winforms-with-a-webbrowsercontrol-fun-with-obj ...

  2. LeetCode First Bad Version (二分查找)

    题意: 有一个bool序列表示对应下标的版本是否出问题(下标从1开始),如果一个版本出了问题,那么其后面全部版本必定出问题.现在给出判断任意版本是否出问题的API,请找到第一个出问题的版本. 思路: ...

  3. R 读取clipboard内容 (MAC)

    在mac上,R读取复制的data.很简单,一行命令 read.table(pipe("pbpaste"))

  4. ZOJ 3878--解题报告

    题目相关: 3878相关链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5526 Edward 打字员习惯于QWERTY键 ...

  5. Asp.net内置对象之Request对象(概述及应用)

    Request对象主要用于获取来自客户端的数据,如用户填入表单的数据.保存在客户端的Cookie等,本文将围绕Request对象,讲解其的主要作用:读取窗体变量.读取查询字符串变量.取得Web服务器端 ...

  6. Educational Codeforces Round 15 A dp

    A. Maximum Increase time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. poj 3468 线段树区间更新/查询

    Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...

  8. 使用Jsoup函数包抓取网页内容

    之前写过一篇用Java抓取网页内容的文章,当时是用url.openStream()函数创建一个流,然后用BufferedReader把这个inputstream读取进来.抓取的结果是一整个字符串.如果 ...

  9. 越狱Season 1-Episode 1: the pilot

    the pilot: 美国电视剧新剧开播都会有一个试播来测试观众对新剧的接受程度,以此来决定是否再继续播下去,也可以说是一个开端,第一集,试播 -Tattoo Artist: That's it. t ...

  10. Java——各种日期的获取(来自别人分享)

     import java.text.DateFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; i ...