首先需要编写一个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. 收集Magento FAQ常见问题处理办法

    问题:Magento如何下载? 解答:Magento的英文官方下载地址为:http://www.magentocommerce.com/download 注意:需要注册后才可以下载,而且请下载完整版本 ...

  2. 让UIWebView弹出键盘上的按钮显示中文

    UIWebView是一个很常用的视图,一般用来加载网页,比如百度: 点击文本框输入框后,会弹出一个带有toolbar的键盘,toolbar中有3个辅助按钮 有了这3个按钮,是方便很多,但默认是英文的, ...

  3. 《More Effective C++ 》笔记

    条款10 防止构造函数里的资源泄露 条款20 协助编译器实现返回值优化 条款22 考虑使用op=来取代单独的op运算符 条款26 限制类对象的个数 条款27 要求或禁止对象分配在堆上

  4. 常用的Hash算法

    1.RSHash unsigned int RSHash(const std::string& str) {    unsigned int b    = 378551;    unsigne ...

  5. xp 共享 guest

    一.首先启用guest来宾帐户 二.控制面板→管理工具→本地安全策略→本地策略→用户权利指派里,“从网络访问此计算机”中加入guest帐户,而“拒绝从网络访问这台计算机”中删除guest帐户: 三.我 ...

  6. 1024PHP数组

    <?php //定义数组//$attr = array();//$attr[0] = 1;//索引数组//$attr = array(1,2,3,4);//关联数组//$attr = array ...

  7. CentOS下解决”用户账户is not in the sudoers file“问题

    如上图,在当前用户cent(我的用户名)下使用sudo命令时,提示"cent is not in the sudoers file. This incident will be report ...

  8. sphinx搜索引擎架构图

  9. Kmeans算法的应用实例(Matlab版本)

    K-means是一种经典的聚类算法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最 ...

  10. webStorm快捷键总结

    Ctrl+Shift+a:快速查找使用编辑器所有功能1.左侧栏目录显影:Ctrl+Shift+F122.文件模板配置:File>Settings>Editor>File and Co ...