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

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

package com.JajaCy.CallActivity;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class CallActivityPlugin extends CordovaPlugin {

    public static final String ACTION ="call";

    @Override
     public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals(ACTION)) {
             try {
            //下面两句最关键,利用intent启动新的Activity
            Intent intent = new Intent().setClass(cordova.getActivity(), Class.forName(args.getString(0)));
             this.cordova.startActivityForResult(this, intent, 1);
            //下面三句为cordova插件回调页面的逻辑代码
             PluginResult mPlugin = new PluginResult(PluginResult.Status.NO_RESULT);

            mPlugin.setKeepCallback(true);
            callbackContext.sendPluginResult(mPlugin);
            callbackContext.success("success");

             } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
        return true;
    }

    /**
     * onActivityResult为第二个Activity执行完后的回调接收方法
     * */
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent){
        switch (resultCode) { //resultCode为回传的标记,我在第二个Activity中回传的是RESULT_OK
            case Activity.RESULT_OK:
            Bundle b=intent.getExtras(); //data为第二个Activity中回传的Intent
            String str=b.getString("change01");//str即为回传的值
            break;
            default:
            break;
        }
    }
}

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

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

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

cordova.define(‘com.JajaCy.CallActivity.CallActivityPlugin‘, function(require, exports, module) {
    var exec=require(‘cordova/exec‘);

    module.exports={
        /**
        param:data
        */
        activityPlugin:function(data){
            /**
            一共五个参数
            第一个 :成功会掉
            第二个 :失败回调
            第三个 :将要调用的类的配置名字(在config.xml中配置 稍后在下面会讲解)
            第四个 :调用的方法名(一个类里可能有多个方法 靠这个参数区分)
            第五个 :传递的参数  以json的格式
            */
            exec(nativePluginResultHandler,nativePluginErrorHandler,"CallActivity","call",[data])
        }
    }
});

 /**
成功时调用的方法
*/
function nativePluginResultHandler (result) {
   alert("SUCCESS: \r\n"+result );
}
/**
失败时调用的方法
*/
function nativePluginErrorHandler (error) {
   alert("ERROR: \r\n"+error );
}

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

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

调用的时候使用:

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

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

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

这样就可以完成Cordova调用Activity

时间: 2024-10-11 11:20:58

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

[转帖]Android平台下OpenGL初步

原文请看 Android平台下OpenGL初步 本文只关注于如何一步步实现在Android平台下运用OpenGl. 1.GLSurfaceView GLSurfaceView是Android应用程序中实现OpenGl画图的重要组成部分.GLSurfaceView中封装了一个Surface.而android平台下关于图像的现实,差不多都是由Surface来实现的 2.Renderer 有了GLSurfaceView之后,就相当于我们有了画图的纸.现在我们所需要做的就是如何在这张纸上画图.所以我们需

浅谈Windows平台下C++调用静态链接库的方式

浅谈Windows平台下C++调用静态链接库的方式 1. 什么是静态链接库?为什么要用静态链接库? 维基百科上关于静态库的解释是这样的:在计算机科学里,静态库(英语:Static library, Statically-linked library),或称静态库,是一个外部函数与变量的集合体.静态库的文件内容,通常包含一堆程序员自定的变量与函数,其内容不像动态链接库那么复杂,在编译期间由编译器与连接器将它集成至应用程序内,并制作成目标文件以及可以独立运作的可执行文件. 由上面的解释可以很清楚的看

Android中多个调用Activity的问题

1 <application 2 android:allowBackup="true" 3 android:icon="@drawable/ic_launcher" 4 android:label="@string/app_name" 5 android:theme="@android:style/Theme.Light.NoTitleBar"> 6 7 <activity 8 android:name=&q

在android平台下WebService的操作步骤

本篇博客的目的是供我以后用到webService时候,进行参考,在这里记录一下 本篇博客写的是,利用webService查询手机号码,参考文章是Android平台调用WebService详解,但是这篇文章是2011年的,现在网络操作必须要在子线程中进行.. 效果图是: 注释很详细,对大家都有很大的帮助~~~~ package lgx.acc.updatedemo; import java.io.IOException; import org.ksoap2.SoapEnvelope; import

Linux平台下Java调用C函数

JNI是Java native interface的简写,可以译作Java原生接口.Java可以通过JNI调用C/C++的库,这对于那些对性能要求比较高的Java程序无疑是一个 福音. 使用JNI也是有代价.大家都知道JAVA程序是运行在JVM之上的,可以做到平台无关.但是如果Java程序通过JNI调用了原生的代码(比如 c/c++等),则Java程序就丧失了平台无关性.最起码需要重新编译原生代码部分.所以应用JNI需要好好权衡,不到万不得已,请不要选择JNI,可 以选择替代方案,比如TCP/I

Android 平台下Ftp 使用模拟器需要住的的问题

以下代码在pc上测试通过,可是在android模拟器上就不工作,不过还可以链接到服务器但不能得到文件 纠结了半天,原来是模式的问题,具体请Google 模拟器中采用建议被动模式 public void getWorkMessage(){ FTPClient ftp = new FTPClient(); try { ftp.connect(server); System.out.println("Connected to " + server); System.out.print(ftp

ios及android两个平台下x264编译脚本

今年做了一些音视频编解码工作,此前做图形.图像类工作多一些,做了音视频编解码才知道,这项工作还是很有趣.很神奇的.比如采集几十M的视频数据,经过编码存储后,文件体积仅仅有几十K大小,这当中就需要x264来发挥神奇了.下面将手机端ios及android两个平台下x264编译脚本分享出来,希望对正在做相关工作的同学有帮助.x264源码地址:http://www.videolan.org/developers/x264.html 1. ios平台下x264编译.这个编译脚本修改自:https://gi

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

引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用手机内部的API跟页面进行信息交换.Cordova 特别为此定制了完善的解决方案,以方便用户进行程序编辑.在这一章里将为大家逐一介绍Cordova与Actitity通讯的实现原理. 目录 一.CordovaPlugin类简介 二.页面通过 cordova.exec 函数调用 CordovaPlugi

Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例

引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开 发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用手机内部的API跟页面进行信息交换. Cordova 特别为此定制了完善的解决方案,以方便用户进行程序编辑.在这一章里将为大家逐一介绍Cordova与Actitity通讯的实现原理. 目录 一.CordovaPlugin类简介 二.页面通过 cordova.exec 函数调用 CordovaPlu