首先建立一个包名为package com.JiajiaCy.CallActivity;

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

在res\xml\config.xml中添加:

  1. <feature name="CallActivity">
  2. <param name="android-package" value="com.JajaCy.CallActivity.CallActivityPlugin"/>
  3. </feature>

在assets\www\plugins\com.JajaCy.CallActivity目录下建一个CallActivity.js

  1. cordova.define('com.JajaCy.CallActivity.CallActivityPlugin', function(require, exports, module) {
  2. var exec=require('cordova/exec');
  3.  
  4. module.exports={
  5. /**
  6. param:data
  7. */
  8. activityPlugin:function(data){
  9. /**
  10. 一共五个参数
  11. 第一个 :成功会掉
  12. 第二个 :失败回调
  13. 第三个 :将要调用的类的配置名字(在config.xml中配置 稍后在下面会讲解)
  14. 第四个 :调用的方法名(一个类里可能有多个方法 靠这个参数区分)
  15. 第五个 :传递的参数 以json的格式
  16. */
  17. exec(nativePluginResultHandler,nativePluginErrorHandler,"CallActivity","call",[data])
  18. }
  19. }
  20. });
  21.  
  22. /**
  23. 成功时调用的方法
  24. */
  25. function nativePluginResultHandler (result) {
  26. alert("SUCCESS: \r\n"+result );
  27. }
  28. /**
  29. 失败时调用的方法
  30. */
  31. function nativePluginErrorHandler (error) {
  32. alert("ERROR: \r\n"+error );
  33. }

在cordova_plugins.js文件中进行如下配置:

  1. {
  2. "file": "plugins/com.JajaCy.CallActivity/CallActivity.js",
  3. "id": "com.JajaCy.CallActivity.CallActivityPlugin",
  4. "clobbers": [
  5. "window.call"
  6. ]
  7. }
  1. module.exports.metadata =
  2. // TOP OF METADATA
  3. {
  4. "com.JajaCy.CallActivity":"0.0.1"
  5. }

调用的时候使用:

  1. window.call.activityPlugin("com.JajaCy.CallActivity.DownloadActivity;");

最后需要在AndroidManifest.xml中进行配置Activity:

  1. <activity android:name="DownloadActivity"></activity>

这样就可以完成Cordova调用Activity

Android 平台下Cordova 调用Activity插件开发的更多相关文章

  1. [转帖]Android平台下OpenGL初步

    原文请看 Android平台下OpenGL初步 本文只关注于如何一步步实现在Android平台下运用OpenGl. 1.GLSurfaceView GLSurfaceView是Android应用程序中 ...

  2. Android平台下Dalvik层hook框架ddi的研究

    通过adbi,可以对native层的所有代码进行hook.但对于Android系统来说,这还远远不够,因为很多应用都还是在Dalvik虚拟机中运行的. 那么,有没有什么办法可以对Dalvik虚拟机中跑 ...

  3. Android平台下的TCP/IP传输(客户端)

    在工科类项目中,嵌入式系统与软件系统或后台数据库之间的信息传输是实现“物联网”的一种必要的途径,对已简单概念的物联网,通常形式都是一个单片机/嵌入式系统实现数据的采集及其处理,通过蓝牙,wifi或者是 ...

  4. Android平台下OpenCV移植与使用---基于C/C++

    在<Android Studio增加NDK代码编译支持--Mac环境>和<Mac平台下Opencv开发环境搭建>两篇文章中,介绍了如何使用NDK环境和Opencv环境搭建与测试 ...

  5. Cordova调用Activity

    首先需要编写一个CallActivityPlugin插件,专门调用Activity package com.example.plugin; import org.apache.cordova.api. ...

  6. Android中多个调用Activity的问题

    <application android:allowBackup="true" android:icon="@drawable/ic_launcher" ...

  7. Android平台下的JNI开发

    JNI是Java Native Interface的缩写,通过JNI可以方便我们在Android平台上进行C/C++编程.要用JNI首先必须安装Android的NDK,配置好NDK环境之后就可以在Ec ...

  8. Android平台下OpenGL初步

    Android OpenGL ES 开发教程 从入门到精通 http://blog.csdn.net/zhoudailiang/article/details/50176143 http://blog ...

  9. Android平台下OpenGL图形编程

    ref: Jayway Team Blog中OpenGL ES简明开发教程https://blog.jayway.com/tag/opengl-es/ OpenGL ES 开发教程http://www ...

随机推荐

  1. macos中xcode使用opencv,错误总结

    使用opencv时,进行编译时,会出现如上图所示错误,按图示更改就行了(我编译出来的有2处)主要参考 https://blog.csdn.net/fk1174/article/details/7011 ...

  2. C语言深度剖析-----数组与指针分析

    数组的本质: 指针的运算: 小标VS指针: a和&a的区别: 例: 数组参数: 所以下例返回4 指针和数组的对比小结:

  3. Android 利用an框架快速实现网络请求(含下载上传文件)

    作者:Bgwan链接:https://zhuanlan.zhihu.com/p/22573081来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架是完全 ...

  4. 4、linux下应用创建线程

    1.linux创建线程之pthread_create 函数简介 pthread_create是UNIX环境创建线程函数 头文件 #include<pthread.h> 函数声明 int p ...

  5. JAVA后端实现统一扫码支付:微信篇

    最近做完了一个项目,正好没事做,产品经理就给我安排了一个任务.   做一个像收钱吧这样可以统一扫码收钱的功能.   一开始并不知道是怎么实现的,咨询了好几个朋友,才知道大概的业务流程:先是开一个网页用 ...

  6. [Ionic2] Device Interaction in an Ionic App with Cordova Plugins

    In this lesson, we are going to learn how to interact with native components through Cordova plugins ...

  7. Linux system函数返回值

    例: status = system("./test.sh"); 1.先统一两个说法: (1)system返回值:指调用system函数后的返回值,比如上例中status为syst ...

  8. php 字符串 去掉 html标签

    echo strip_tags("Hello <b>world!</b>");

  9. 【25.64%】【codeforces 570E】Pig and Palindromes

    time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  10. 《转》couldn&#39;t connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145

    couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145,有须要的朋友能够參考下. 应为昨天安装的时候没及时 ...