`
GhostWolf
  • 浏览: 312765 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Cordova调用Activity

阅读更多

首先需要编写一个CallActivityPlugin插件,专门调用Activity

 

 

package com.example.plugin;

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

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

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;
		}
    } 
}

 

 然后配置CallActivityPlugin插件res/xml/config.xml

<plugin name="CallActivityPlugin" value="com.example.plugin.CallActivityPlugin"/>

 

接着利用js调用插件(callActivity.js)

 

window.callActivityPlugin = function(str,callback) {
	cordova.exec(callback, pluginFailed, "CallActivityPlugin", "call", [ str ]);
};

var pluginFailed = function(message) {
	alert("failed>>" + message);
}

$(function() {
	init();
});

var init = function() {
	console.log("phonegap init!!");
	document.addEventListener("deviceready", onDeviceReady, true);
}

var onDeviceReady = function() {
	
	console.log("deviceready event fired");

	window.callActivityPlugin("com.example.activity.MyActivity" , function(echoValue) {
		console.log("callActivityPlugin echo>>");
	});
};

 

最后html页面加载(相对简单)

<!DOCTYPE html>
<html>
  <head>
    <title>Device Properties Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<script type="text/javascript" charset="utf-8" src="../js/jquery-1.8.3.js"></script>
	<script type="text/javascript" charset="utf-8" src="../js/cordova-2.3.0.js"></script>
	<script type="text/javascript" charset="UTF-8" src="../js/callActivity.js"></script>
  </head>
  <body>
    <p id="callActivityPlugin">callActivityPlugin</p>
    <a href="../index.html">返回</a>
  </body>
</html>

 

 

新的Activity代码(相对简单)

package com.example.activity;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import com.example.ask.R;

public class MyActivity extends Activity {
	private Button btn;

	private int flag = 0;

	private Intent intentNew = null;

	private Context context = this;

	@Override
	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

		setContentView(R.layout.my_activity_main);

		intentNew = this.getIntent();

		btn = (Button) findViewById(R.id.button1);

		btn.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				Intent mIntent = new Intent();  
		        mIntent.putExtra("change01", "1000");  
		        mIntent.putExtra("change02", "2000");  
		        // 设置结果,并进行传送  
		        setResult(RESULT_OK, mIntent);
				finish();
			}
		});

	}
}

 

参考文章:https://github.com/phonegap/phonegap-plugins/blob/master/Android/EmailComposerWithAttachments/EmailComposer.java

分享到:
评论
1 楼 yan160523 2013-03-22  
  

相关推荐

    Android代码-cordova调用安卓原生activity插件

    cordova调用安卓原生activity插件 使用简介 JS端使用方式 //sendData表示要从js端发送到原生activity的数据,需用json对象传输 var sendData = { id:10001, name:"Simon", age:28 }; window.cordova.plugins....

    cordova跳转原生Activity

    在Cordova的应用中,有时我们需要调用原生的Android Activity来实现特定功能,例如访问设备硬件或利用原生库。本篇文章将详细介绍如何在Cordova中进行原生Activity的跳转,以及`HjkPlugin`可能涉及的相关知识点。 ...

    cordova activity和HTML通信

    在 JavaScript 中定义一个函数,该函数调用 `cordova.exec()` 方法,传入服务名、方法名和参数。在 Android 侧,你需要创建一个继承自 `CordovaPlugin` 的类,并重写 `execute()` 方法来处理来自 JavaScript 的请求...

    phonegao与本地数据交互_调用Activity等

    phonegao与本地数据交互 调用Activity等 自定义 插件别写 我使用的cordova版本为 3.3.0 我的博客 http://blog.csdn.net/aaawqqq 有详细解析 phonegap 开发流程 希望能帮助大家 谢谢

    cordova开发自定义插件(详细篇含jar包调用示例)

    本篇文章将深入探讨如何在Cordova项目中开发自定义插件,特别是在Android平台上实现Java(jar包)调用以及与JavaScript之间的交互,从而更好地理解和运用第三方库。 首先,我们来了解一下Cordova插件的基本结构。一...

    Native+WebApp中Phonegap调用Android Activity

    在标题“Native+WebApp中Phonegap调用Android Activity”中,我们关注的是如何在PhoneGap应用中启动并交互Android的原生Activity。 在Android平台上,Activity是程序的基本单元,用于处理用户交互和展示UI。当...

    phonegap调用activity与数据交互_插件

    phonegap调用activity与数据交互 Phonegap 调用本地的Activity插件 我的博客:http://blog.csdn.net/aaawqqq?viewmode=list 查看我上一篇插件开发的文章: ... 本节主要记录调用Activity的方式;...

    cordova项目集成二维码扫描

    对于Android,你需要编辑`platforms/android/app/src/main/res/layout/qrscanner_activity.xml`文件,调整相关元素的属性。对于iOS,需要修改`platforms/ios/YourProjectName/Plugins/cordova-plugin-qrscanner/...

    fragment cordova android

    - 使用`addJavascriptInterface()`方法可以将Java对象暴露给JavaScript,允许JavaScript代码调用Android原生方法。 7. **挑战与注意事项**: - 确保Fragment生命周期管理正确,因为Fragment和CordovaWebView的...

    android 拍照选图

    同时,确保在Activity或Fragment的生命周期方法中正确管理Bitmap。 6. **使用硬件加速**: 启用硬件加速可以帮助处理图像操作,但需注意某些API在硬件加速模式下可能不适用。 7. **利用Android系统的裁剪服务**: ...

    cordova自定义插件

    本篇文章将深入探讨如何创建并使用Cordova自定义插件,以及如何实现打印吐司(Toast)和启动Activity并传递值给JavaScript的功能。 首先,让我们理解Cordova插件的基本结构。一个Cordova插件通常包含两部分:...

    Cordova 3.x 实用插件(4) -- Android的SEND、VIEW、CALL(WebIntent)

    在Cordova中实现这个功能,你需要创建一个插件,接收电话号码作为输入,然后使用`Intent`的`setData()`方法设置电话号码URI,最后调用`startActivity()`来发起电话呼叫。注意,为了安全和隐私,此功能可能需要请求...

    cordova_to_native.rar

    6. **调用插件**:在Cordova应用的JavaScript代码中,当用户触发导航需求时,调用`startBaiduNavigation`函数,Cordova插件机制会自动处理剩余的工作,调起原生的Android活动。 通过以上步骤,我们可以实现一个...

    Cordova源码

    在Android开发中,Activity是程序中负责处理用户交互的类,而这个特定的Activity可能用于展示和测试Cordova集成到Android应用中的效果。 深入学习Cordova,你需要掌握以下几个关键知识点: 1. **Cordova架构**:...

    Phonegap插件打开Activity

    在PhoneGap中,通过插件调用Android的Activity,可以使Web应用启动新的功能或者界面,增加应用的交互性和功能性。 首先,配置PhoneGap 2.2插件需要以下步骤: 1. **创建项目**:在Android Studio中创建一个新的...

    phoneGap与android的activity交互例子,互相调用函数,js,java的交互.zip

    3. **PhoneGap API**:PhoneGap提供了一系列的API,如`cordova.exec()`函数,用于在JavaScript中调用Android的原生功能。例如,你可以调用`exec()`来访问设备的硬件特性,如摄像头、GPS或文件系统等。 4. **...

    海康威视视频监控android移动端调用

    【海康威视视频监控android移动端调用】项目是一个基于Android平台的应用,旨在实现对海康威视DS-8116HC DVR设备的视频监控功能。该项目适用于开发者或者有相关需求的用户,通过Android 4.1系统进行运行。在开发过程...

    Android-借助WebSocket完成Android本地代码调用JavaScript代码的插件

    - 在Java的WebSocketListener中,当接收到JavaScript的响应时,可以通过CordovaPlugin的callbackSuccess或callbackError方法将结果返回给Java调用者。 5. **安全性和性能优化**: - 为了保证应用的安全性,应确保...

    调用拨打电话

    创建一个隐式Intent,指定ACTION_CALL动作,并附上电话号码作为数据,然后使用`startActivity`方法启动这个Intent。如果需要在原生C++代码中实现,可以通过JNI(Java Native Interface)与Java层交互。首先,定义一...

Global site tag (gtag.js) - Google Analytics