android之phonegap入门

利用phoneGap可以利用HTML开发安卓应用,是web app的一种,可以有效的提高开发效率,降低开发成本 。

第一步:

开发环境配置以及基本操作请参考其它文档.

新增一个名为 phoneGap 的android项目,将主activity命名为:PhoneGapActivity.java

从下载好的 phonegap 找到 lib\android,(下载地址记不太清了,google callback-phonegap-0d1f305)

按照以下目录分别复制到android 项目

assets\www\phonegap-1.4.1.js

res\xml\phonegap.xml

res\xml\plugins.xml

libs\phonegap-1.4.1.jar

以上路径除了www外,其它都是必须路径,不能更改名字,没有文件夹就创建一个

第二步:创建完成后复制以下代码到AndroidManifest.xml ,这些代码为程序提供权限,当然我们现在用不了这么多权限,但是加进去总没错.

<supports-screens
 android:largeScreens="true"android:normalScreens="true"android:smallScreens="true"android:resizeable="true"android:anyDensity="true"/><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.RECEIVE_SMS" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.WRITE_CONTACTS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

修改MainActivity

添加完成后,找到我们的主activity PhoneGapActivity.java 找到onCreate方法,

替换setContentView(R.layout.main);super.loadUrl(“http://baidu.com“);或者super.loadUrl(“file:///android_asset/www/index.html”);

第四步:写index.html文件

其中包括要调用的方法,和调用成功之后返回的方法,分为成功方法与失败方法

<!DOCTYPE HTML>
<html><head><meta http-equiv="Content-type" name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no, width=device-width"><title></title><script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"> </script><script type="text/javascript" charset="utf-8" src="test.js"> </script><script type="text/javascript">function test1(){alert("HelloWorld");navigator.hmCommen.test(successCallback,errorCallback,{});}function testlogin(name,age){//navigator.hmCommen.testLogin(successCallback,errorCallback,{});navigator.hmCommen.testLogin(successCallback,errorCallback,{"name":name,"age":age});}function successCallback(){alert("Success");}function errorCallback(){alert("failed");}function test2(){alert("hello world");}</script></head><body><h1>Hello World</h1><button type="button" onclick="test2()">Hello Worold</button><button type="button" onclick="test1()">call me</button><button type="button" onclick="testlogin('abc',12)">login test</button></body></html>

第五步:写js文件

/** PhoneGap is available under *either* the terms of the modified BSD license *or* the* MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.** Copyright (c) 2005-2010, Nitobi Software Inc.* Copyright (c) 2010-2011, IBM Corporation*/if (!PhoneGap.hasResource("hmCommen")) {
PhoneGap.addResource("hmCommen");/*** This class contains information about the current network Connection.* @constructor*/
var HmCommen = function() {};/*** Get connection info** @param {Function} successCallback The function to call when the Connection data is available* @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)*/
HmCommen.prototype.test = function(successCallback, errorCallback,options) {// Get infoPhoneGap.exec(successCallback, errorCallback, "HM_service", "test", [options]);
};HmCommen.prototype.testLogin = function(successCallback, errorCallback,options) {// Get infoPhoneGap.exec(successCallback, errorCallback, "HM_service", "testLogin", [options]);
};PhoneGap.addConstructor(function() {if (typeof navigator.hmCommen === "undefined") {navigator.hmCommen = new HmCommen();}});
}

第六步:配置XML文件

在plungs.xml中添加

 <plugin name="HM_service" value="com.zj.phonegaptest.HMTest"/>

注意,第五步中对象必须与XML中配置的相同,value即为要调用的类,这样才知道要调用哪一个类

第七步:写实现类

package com.zj.phonegaptest;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import android.widget.Toast;import com.phonegap.api.*;public class HMTest extends Plugin {@Overridepublic PluginResult execute(String arg0, JSONArray arg1, String arg2) {// TODO Auto-generated method stubJSONObject arg=arg1.optJSONObject(0);if(arg0.equalsIgnoreCase("test")){return doTest();}else if(arg0.equalsIgnoreCase("testLogin")){try {return testLogin(arg);} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return null;}private String name=null;private int age=0;PluginResult pluginResult=null;private PluginResult testLogin(JSONObject arg) throws JSONException{name=(String)arg.get("name");age=arg.getInt("age");if("abc".equals(name)){pluginResult=new PluginResult(PluginResult.Status.OK);}else{pluginResult=new PluginResult(PluginResult.Status.OK);}return pluginResult;}private PluginResult doTest(){pluginResult=new PluginResult(PluginResult.Status.OK);return pluginResult;}}

参考链接:

phoneGap 基于android 实例 一 - china-orange - ITeye技术网站
http://lvjj.iteye.com/blog/1484479
PhoneGap开发环境搭建 - 随机 - 博客园
http://www.cnblogs.com/Random/archive/2011/12/28/2305398.html

运行结果:

完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java获得项目绝对路径

在jsp和class文件中调用的相对路径不同。 在jsp里&#xff0c;根目录是WebRoot 在class文件中&#xff0c;根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。 1.jsp中取得路径&#xff1a;以工程名为TEST为例&am…

全球第二家 亚马逊“喜提”万亿美金市值 AI或是最大功臣

亚马逊创始人杰夫贝佐斯&#xff08;Jeff Bezos&#xff09;来源&#xff1a;网易智能摘要&#xff1a;9月5日消息&#xff0c;美国当地时间周二&#xff0c;全球电商巨头亚马逊(Amazon)股价一度触及史上最高点&#xff0c;促使亚马逊市值短暂达到1万亿美元。不过&#xff0c;在…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨重新格式化部门表【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

Android之webView入门

WebView可以使得网页轻松的内嵌到app里&#xff0c;还可以直接跟js相互调用。 webview有两个方法&#xff1a;setWebChromeClient 和 setWebClient setWebClient&#xff1a;主要处理解析&#xff0c;渲染网页等浏览器做的事情 setWebChromeClient&#xff1a;辅助WebView处…

APL开发日志--2013-01-17

以后作者在博客上在专栏记录 APL每天开发日志, 以记录APL最新进展. 2013-01-17 APL开发日志: -------------------------------------------------------------------------------------------------------- 1. 增加API: getAplPublicPath() ; // 获得APL公共路径 setAplPubli…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 15丨查询活跃业务【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

苹果/三星/华为纷纷布局人工智能 将AI作为公司发展新动力

来源&#xff1a;手机报在线摘要&#xff1a; 目前&#xff0c;以苹果、三星和华为为代表的手机厂商除了继续探索人脸识别、屏下指纹和柔性显示屏等技术外&#xff0c;也将目标瞄向了人工智能&#xff0c;纷纷将“AI拍照”、“AI芯片”等作为营销热门话题&#xff0c;并通过大力…

Android之Activity框架

在安卓应用中&#xff0c;经常需要Activity中经常需要有大量相似的Activity类&#xff0c;这些类往往有相似的结构与功能&#xff0c;因此产生了大量重复代码&#xff0c;为此&#xff0c;以下提供一种方法有效的降低了代码冗余。 定义Activity工具类 * 应用程序Activity…

POJ-1260 Pearls DP

题目链接&#xff1a;http://poj.org/problem?id1260 基本DP&#xff0c;只要证明最优解中不会有交叉替换&#xff0c;得出转移方程&#xff1a;f[i]min{f[j](a[j1]..a[i]10)*p[i]}。由(ai10)*bi(aj10)*bj(aiaj10)*bj > (ai10)*biai*bj 替换> t*biai*bj 可证。 1 …

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 15丨用户购买平台【难度困难】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

量子通信产业化初试,中国筹建千亿级国家实验室

来源&#xff1a;第一财经摘要&#xff1a;一个涉及多地的量子信息科学国家实验室&#xff08;下称“国家实验室”&#xff09;正在筹建&#xff0c;长期投资将达千亿元。第一财经从2018年国际量子密码会议上了解到&#xff0c;中国正在筹建的国家实验室涉及合肥、上海和北京等…

Android之自定义控件入门

本文主要讲述了实现安卓button点击变色与利用ViewPager实现图片自动轮播效果 我伞可以看到在很多应用中&#xff0c;安卓按钮按下时与正常时状态是不同的&#xff0c;这种效果也很容易达到。 第一步&#xff1a;创建XML文件定义不同事件的不同效果 <?xml version"1…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 16丨报告的记录 II【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

iOSUIImage变为NSData并进行压缩

//sdk中提供了方法可以直接调用 UIImage *img [UIImage imageNamed:"some.png"]; NSData *dataObj UIImageJPEGRepresentation(img, 1.0); //下面是sdk中UIImage.h头文件中的内容 UIKIT_EXTERN NSData *UIImagePNGRepresentation(UIImage *image); // return im…

理性解读中国科技实力:不震惊式吹捧,也不全盘抹杀

来源&#xff1a;风云之声&#xff08;ID:fyvoice&#xff09;关于中国科技成果&#xff0c;大家一直都在讨论&#xff0c;网上也有很多评论文章。有的&#xff0c;把中国科技实力吹上天&#xff1b;有的&#xff0c;则干脆贬入地。中国在很多领域确实做得不错&#xff0c;与此…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 16丨市场分析 II【难度困难】​

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

android之常用知识点(一)

本文主要包括安卓一些常用的知识点 android常用的四种响应按钮点击事件的方法android动态刷新界面android常用的listView用法android常用的handler的用法 android常用的四种响应按钮点击事件的方法有 1.内部类 2.匿名内部类 3.布局文件夹定义Onclick属性,并在activity中声…

Unity(四):使用场景Ⅰ:建立类型映射

在之前的一篇文章“Unity(三)&#xff1a;快速入门”中&#xff0c;给出了一个简单的示例&#xff0c;让我们对Unity有一个感性的认识。但是&#xff0c;Unity到底是做什么用的呢&#xff1f;一个简单示例并不能解答这个问题。 总的来看&#xff0c;Unity的使用场景主要有以下几…

科技创新2030---“新一代人工智能”重大项目2018年度项目申报指南征稿

来源&#xff1a;财政资金申请摘要&#xff1a; “新一代人工智能”重大项目的凝练布局和任务部署已经战略咨询与综合评审特邀委员会咨询评议&#xff0c;并报国务院批准实施。根据《国务院关于改进加强中央财政科研项目和资金管理的若干意见》&#xff08;国发〔2014〕11号&…

一旦上云,欲罢不能,带大家薅一薅“云羊毛”

一旦上云&#xff0c;欲罢不能。相对于传统服务器&#xff0c;云服务器因为不需要去拉网线、搭机房、交电费等等问题&#xff0c;云服务器提供商往往会提供一整套完整的解决方案&#xff0c;帮助企业和个人用户&#xff0c;快速实现业务部署。 近年来&#xff0c;各大厂也在积…