在项目采用Native+Web方式开发,Android团队开发一个模块的代码,WebApp phonegap开发几个模块,需要将Android中的模块潜入到Phonegap开发的几个模块中。需要通过Phonegap调用Android 的Activity。

demo如下:

Phonegap插件类:

package com.easyway.etrip.plugins;import org.json.JSONArray;import android.app.Activity;import android.content.Intent;import android.os.Handler;import android.os.Message;import android.util.Log;import com.phonegap.api.Plugin;import com.phonegap.api.PluginResult;/** * Phonegap 调用Android Activity的插件 *  * @Title:  * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-7-5 * @author  longgangbai * @version 1.0 */public class AndroidActivityPlugin  extends Plugin{ private Object synObj = new Object();@Overridepublic PluginResult execute(String action, JSONArray data, String callbackID) {// TODO Auto-generated method stubif(action.equals("startActivity")){PluginResult result = null;try {PluginResult.Status status = PluginResult.Status.OK;if(action.equals("startActivity")){ Log.e("test", "test plugin js -> java~~~~"+data.getString(0)); Log.e("test", "test plugin js -> java~~~~"); result = new PluginResult(status, data.getString(0));Message msg=new Message();msg.what=1;Log.e("参数信息:", data.toString());msg.obj=data.getString(0);handler.sendMessage(msg);sleep();}} catch (Exception e) {}return result;}else {            return new PluginResult(PluginResult.Status.INVALID_ACTION);}}private Handler handler = new Handler() {public void handleMessage(Message msg) {if (msg == null) {return;}switch (msg.what) {case 1:String className=msg.obj.toString();try {Class activityClass = Class.forName(className);Intent intent = new Intent(ctx.getBaseContext(), activityClass);//你想去的activity(exp:Temp)ctx.startActivityForResult(AndroidActivityPlugin.this, intent, 1);} catch (ClassNotFoundException e) {Log.e("Why", "错误原因:"+className);e.printStackTrace();}break;}};};@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent intent) {// TODO Auto-generated method stubif(requestCode==1){if(resultCode == Activity.RESULT_CANCELED){//返回时调用Log.e("test", "result plugin -> java~~~~"); Log.e("test", "result plugin -> java~~~~"); weakup();}}else{super.onActivityResult(requestCode, resultCode, intent);}}private void sleep()    {        try        {            synchronized(synObj)            {                synObj.wait();            }        }        catch (InterruptedException e)        {            e.printStackTrace();        }    }private void weakup()    {        synchronized(synObj)        {            synObj.notify();        }    }}

phonegap启动类:

package com.easyway.etrip;import android.os.Bundle;import com.phonegap.DroidGap;/** * phonegap启动类 *  * @Title:  * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-7-5 * @author  longgangbai * @version 1.0 */public class PhonegapAndroidActivityActivity extends DroidGap  {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);          super.loadUrl("file:///android_asset/www/index.html");    }}

Android的Activity类:

package com.easyway.etrip;import android.app.Activity;import android.os.Bundle;/** *  *  * @Title:  * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-7-5 * @author  longgangbai * @version 1.0 */public class ThirdAndroidActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        super.setContentView(R.layout.main);    }}

phonegap的插件配置类phonegap.xml:

   <plugin name="AndroidActivity" value="com.easyway.etrip.plugins.AndroidActivityPlugin"/>

androidActivity.js

var AndroidActivity=function(){}; AndroidActivity.prototype.startActivity = function(success, fail,parmas){     return PhoneGap.exec(             function(args){ success(args); },             function(args){ fail(args); },             'AndroidActivity', //java类             'startActivity', //action             [parmas] //params              ); };PhoneGap.addConstructor(function() {    PhoneGap.addPlugin('androidActivity', new AndroidActivity());});

调用的测试类:

<!DOCTYPE HTML><html>  <head>    <meta name="viewport" content="width=320; user-scalable=no" />    <meta http-equiv="Content-type" content="text/html; charset=utf-8">    <title>Minimal AppLaud App</title>  <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>  <script type="text/javascript" charset="utf-8" src="androidActivity.js"></script>  <script type="text/javascript" charset="utf-8">function openAndroidActivity(){  window.plugins.androidActivity.startActivity(function(r){//alert(r);},function(e){//alert(e);},"com.easyway.etrip.ThirdAndroidActivity");}</script></head><body><h1>Hello World</h1> <input type="button" value="打开Android Activity" onclick="javascript:openAndroidActivity();"></body></html>

更多相关文章

  1. Android(安卓)开发中的日常积累
  2. Android手机开发 控件 TextView文字居中
  3. (Android)搭建NDK开发环境 (二)
  4. Android(安卓)Studio 4.0 - 创建新项目
  5. Android开发环境搭建教程
  6. Android一些好的资源
  7. android开发每日汇总【2011-11-02】
  8. Android开发秘籍学习笔记(一)
  9. Android网络游戏之神农诀项目开发--视频观看地址

随机推荐

  1. Android(安卓)加载assets中的资源文件实
  2. Android(安卓)通过软引用实现图片缓存,防
  3. Android(安卓)Studio 初体验
  4. 为Activity生成桌面快捷方式
  5. 2011.06.08——— android 1.6 launcher
  6. Android(安卓)关于 OnScrollListener 事
  7. porting iperf to Android(安卓)platform
  8. RecyclerView实现横向滚动效果
  9. android 发送短信的两种方式
  10. Android应用开发——界面开发之常用组件