- 浏览: 7325425 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在项目采用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(); @Override public PluginResult execute(String action, JSONArray data, String callbackID) { // TODO Auto-generated method stub if(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; } }; }; @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { // TODO Auto-generated method stub if(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>
- PhonegapAndroidActivity.zip (873.7 KB)
- 下载次数: 427
评论
11 楼
myruby520
2015-01-08
myruby520 写道
AndroidActivityPlugin 中 64行:ctx.getBaseContext() 请问这个ctx哪来的???
刚才查了下,现在版本是这样获取的 cordova.getActivity()
10 楼
myruby520
2015-01-08
AndroidActivityPlugin 中 64行:ctx.getBaseContext() 请问这个ctx哪来的???
9 楼
longgangbai
2013-06-18
xie_en 写道
你的context用的太想当然了吧。
不明白,一个字汗,
8 楼
xie_en
2013-06-18
你的context用的太想当然了吧。
7 楼
longgangbai
2012-09-22
小花_理想 写道
小花_理想 写道
楼主,导入之后显示版本问题。Unable to resolve target 'android-8'。改了project.properties中的版本还是不行。求指导
楼主,调试好了。但是感觉没有调用Activity。因为我在Activity打sysout与log.i都没有办法执行
你采用Debug模式启动,你就会发现,这是phonegap插件的原理,你调试应该就明白了
6 楼
小花_理想
2012-09-18
小花_理想 写道
楼主,导入之后显示版本问题。Unable to resolve target 'android-8'。改了project.properties中的版本还是不行。求指导
楼主,调试好了。但是感觉没有调用Activity。因为我在Activity打sysout与log.i都没有办法执行
5 楼
小花_理想
2012-09-18
楼主,导入之后显示版本问题。Unable to resolve target 'android-8'。改了project.properties中的版本还是不行。求指导
4 楼
zhiduo5
2012-08-24
longgangbai 写道
zhiduo5 写道
简单点说就是让你你的程序能从ThirdAndroidActivity跳回PhonegapAndroidActivityActivity能跳回来吗,跳不回来我只能在插件里加载了!希望哥哥把你的程序改成能跳回来!
如果想从Activity中跳到js页面起始可以
1.采用插件方法。
插件调用js,js跳转到相关的页面
2.采用webview跳转到相关的页面。
不是很明白,把你的第一种方法,给个关键代码谢谢!
3 楼
longgangbai
2012-08-24
zhiduo5 写道
简单点说就是让你你的程序能从ThirdAndroidActivity跳回PhonegapAndroidActivityActivity能跳回来吗,跳不回来我只能在插件里加载了!希望哥哥把你的程序改成能跳回来!
如果想从Activity中跳到js页面起始可以
1.采用插件方法。
插件调用js,js跳转到相关的页面
2.采用webview跳转到相关的页面。
2 楼
zhiduo5
2012-08-23
简单点说就是让你你的程序能从ThirdAndroidActivity跳回PhonegapAndroidActivityActivity能跳回来吗,跳不回来我只能在插件里加载了!希望哥哥把你的程序改成能跳回来!
1 楼
zhiduo5
2012-08-23
我想要从目标Activity跳回来,就是super.loadUrl("file:///android_asset/wwwindex.html");
咋跳啊,求代码!
咋跳啊,求代码!
发表评论
-
[转]年度最实用50款免费Android应用推荐
2012-11-08 16:39 3361据国外媒体报道,有人说Android应用市场比iPhone应用 ... -
GIS的学习(四十五)【转】Integration of the MBTiles format on Android
2012-10-22 17:13 2930转载自 http:/ ... -
GIS的学习(四十四)osmdroid sdcard检查
2012-10-15 16:12 2325在许多应用中使用到sdcard的检查,在osmdro ... -
GIS的学习(四十三)osmdroid基于几个经典代理类
2012-10-15 16:06 2616在osmdroid中给基于位置的代理类如下: pack ... -
Android中PopupWindow的用法(位置、动画、焦点)
2012-10-12 14:12 11505在Android中有很多级别的Window,不同级别的Wind ... -
【转】Android根据分辨率进行单位转换-(dp,sp转像素px)
2012-10-11 09:18 27119Android系统中,默认的单位是像素(px)。也就是说,在没 ... -
GIS的学习(二十九)Osmdroid 离线地图存放位置的研究和详细分析
2012-09-23 11:49 11494在手机通过osmdroid调用离线地图必须放在 ... -
GIS的学习(二十八)Osmdroid相关的开源项目
2012-09-23 11:31 25373osm 数据格式(openstreet map)与Ro ... -
GIS的学习(二十七)通过geoserver的georss访问第三方地图
2012-09-23 00:34 3594在geoserver中如果想调用第三方地图可以采 ... -
android中使用 定时更新界面定时器Timer的使用
2012-09-22 22:09 25505handler的使用 一、Handler的定义: ... -
【转】Android应用程序的自动更新升级(自身升级、通过tomcat) .
2012-09-16 15:03 7352http://blog.csdn.net/mu0206mu/a ... -
GIS的学习(二十七)OGC 的WCS WFS 及WMS 服务
2012-09-11 22:22 12093http://www.gisall.com/?6678/v ... -
GIS的学习(二十六)geotools 使用 部分代码总结
2012-09-11 22:20 5675前段时间的一个项目 本来用ae完成了种种的 查询,空间分析等等 ... -
GIS的学习(二十五)geoserver wms中的各种操作API详细讲解和使用
2012-09-10 17:42 9688官方geoserver中WMS服务中几种操作的API的详细说明 ... -
GIS的学习(二十四)android异步调用geoserver wms中的地图
2012-09-10 17:38 8142在geoserver的客户端通过wms的GetMap实现 ... -
GIS的学习(二十三)geoserver中CQL和ECQL的使用
2012-09-10 16:29 6609以下引用自官方文档: CQL and ECQL¶ CQ ... -
GIS的学习(二十二)osmdroid中添加縮放控件
2012-09-06 23:09 2774package com.geoserver.osmdroid; ... -
GIS的学习(二十一)在osmdroid 地图中添加marker 并添加事件
2012-09-06 22:27 6594我有 osmdroid,overlayswithf ... -
GIS的学习(二十)基于Geoserver的WFS服务与Openlayers实现地理查询
2012-08-30 18:48 11395基于Geoserver发布的wfs服务,与Openlayers ... -
GIS的学习(十九)Geoserver使用添加,删除,查询地图中的POI
2012-08-30 17:28 10339在geoserver自定义的地图中通过geoserver ...
相关推荐
3. **cordova_plugins.js** - 该文件记录了已安装的Cordova插件,每个插件都提供了特定的设备功能接口,开发者可以通过这些接口在Web应用中调用设备功能。 4. **img** - 图像资源文件夹,包含应用所需的图片资源。 ...
综上所述,实现Webapp调用Android后台的百度地图定位及获取IMEI功能,需要结合HTML、JavaScript和Android原生代码,通过WebView桥接它们之间的通信。在开发过程中,除了技术实现,还要注意用户隐私保护和安全性,...
2. 漂亮的界面:框架中的UI组件设计精致,配色协调,图标清晰,布局合理,为用户提供了优质的视觉体验。 3. 响应式布局:基于Bootstrap的响应式设计,IN+框架能够自适应不同尺寸的屏幕,无论是桌面、平板还是手机,...
【标题】"myeclipse开发EJB+Webapp"涵盖了在Eclipse集成开发环境中创建和部署Enterprise JavaBeans(EJB)以及与Web应用程序交互的知识点。EJB是Java平台企业版(Java EE)的核心组件,主要用于构建可扩展、分布式、...
MUI的支付模块通常会提供与原生支付接口的桥梁,使WebApp能调用手机支付功能,如微信支付、支付宝等,实现无缝的用户支付体验。 结合以上信息,我们可以详细阐述以下几个关键知识点: 1. **HTML5核心特性**:学习...
许多开源库和工具简化了创建原生WebApp的过程,如Cordova(Apache PhoneGap)、React Native、Ionic等。它们提供了更高级别的抽象,使得开发者可以更专注于WebApp的业务逻辑,而不是底层的原生实现。 五、实际应用 ...
通过PhoneGap,开发者可以利用自己熟悉的Web技术快速构建应用,同时享受移动设备的硬件特性,而无需深入学习各种操作系统(如iOS、Android或Windows Phone)的底层细节。 1. **PhoneGap核心概念**:PhoneGap的核心...
从晚上下载的例子,发现不能自动获取设备、服务和特征值,这就导致了程序通用性大大降低,在通过自己的摸索后,将这部分功能调试通过,现在已经是一个通用的webapp调用ble的程序了,功能包括搜索、连接蓝牙,选取...
这个项目的目标是简化对多台Android设备进行自动化测试、调试或者管理的过程,无需频繁地在命令行界面中输入ADB命令。 **ADB(Android Debug Bridge)** 是Android SDK中的一个强大工具,允许开发者通过USB或无线...
对于JavaScript与Java之间的交互,可以使用`addJavascriptInterface`方法在Java代码中暴露出接口,然后在JavaScript中调用。例如,我们创建一个名为`AppBridge`的接口: ```java webView.addJavascriptInterface...
这是一款网站转换成APP的源代码,开发语言使用Flutter,开发工具使用的是AndroidStudio,你只需要在APP源代码里面填写你的域名,即可生成即可生成APP,包括安卓或者苹果 添加或者编辑底部菜单或者悬浮按钮等等,当用户...
当用户在WebApp中触发支付操作时,JavaScript代码会调用支付插件,传递必要的参数(如订单信息),然后由插件处理这些请求,完成实际的支付流程。 2. **JavaScript开发支付流程**: - **初始化插件**:首先,...
INSPINIA IN+ 是一款2018年发布的最新版本的WebApp管理主题,版本号为2.7.1。这款主题专为构建高效、现代的后台管理系统而设计,尤其适合那些寻求ASP.NET MVC5技术栈解决方案的开发者。其核心特点在于提供了直观的...
4. **JavaScript与Java交互**:通过WebView提供的JavaScriptInterface,开发者可以在JavaScript代码中调用Android的Java方法,实现两者之间的通信。反之,Java也可以通过WebView的loadUrl方法注入JavaScript代码,...
- "location of the android sdk has not been setup in the preferences":检查 Eclipse 中的 Android SDK 设置是否正确。 - "workspace Unavailable":可能是删除项目但未删除项目目录,移除残留的目录或重新指定...
"barcode"可能指的是一个具体的示例项目,展示如何在PhoneGap应用中调用二维码扫描功能。开发者需要在项目中引入相关库,配置PhoneGap插件,并编写JavaScript代码来触发扫描并处理扫描结果。 4. **Android环境设置...
在Android平台上,WebApp开发是一项重要的技能,它允许开发者利用Web技术来构建应用程序,从而减少了对原生开发的依赖。本篇文章将深入探讨Android WebApp开发的各个方面,旨在为开发者提供一个全面的理解和实践指导...
PhoneGap做的手机WebAPP安装程序