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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

Android之自定义控件入门

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

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

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

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;各大厂也在积…

Android之自定义控件深入

本文主要讲述两个知识点:popwindow的使用和通过继承View实现一个自定义控件&#xff0c;实现点击&#xff0c;手动按钮的效果. popwindow的使用 //定义 popupWindowpopWin new PopupWindow(MainActivity.this);popWin.setWidth(input.getWidth()); //设置宽度popWin.setHeig…

麒麟芯片AI首席科学家,解读AI芯片如何让手机更智能

来源&#xff1a;华为摘要&#xff1a;8月31日&#xff0c;华为发布了新一代顶级人工智能手机芯片——麒麟980&#xff0c;成为全球首款采用7nm制程工艺的手机芯片。麒麟980能做到人脸识别、物体识别、物体检测、图像分割、智能翻译等&#xff0c;实现AI识别质的飞跃。今天&…

协议森林14 逆袭 (CIDR与NAT)

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 严禁任何形式转载。 IPv4由于最初的设计原因&#xff0c;长度只有32位&#xff0c;所以只提供了大约40亿个地址。这造成了IPv4地址的耗尽危机。随后&#xff0c;IPv6被设计出来&#xff0c;并可以提供足够…

认知神经科学:美陆军高度关注的人工智能与生物科技的交叉学科领域

来源&#xff1a;天大神经工程近年来&#xff0c;随着“第三次抵消战略”的深入推进&#xff0c;美军重点部署人工智能、生物科技等前沿技术领域发展&#xff0c;寻求获取新的领先优势。作为人工智能与生物科技的交叉学科领域&#xff0c;认知神经科学具有颠覆未来作战样式的巨…

Android之自定义属性

安卓自定义属性主要有3个步骤 在values文件夹新建attrs.xml文件中声明属性&#xff0c;包括属性名和格式&#xff0c;format常用属性有string ,integer,reference等 <?xml version"1.0" encoding"utf-8"?> <resources><!-- 声明属性集…

log4j的配置方法

一、 介绍 Log4j是Apache的一个开放源代码项目&#xff0c;通过使用Log4j&#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等&#xff1b;我们也可以控制每一条日志的输出格式&#xff1b;通…

中国智能制造发展趋势!

来源&#xff1a;中国电子信息产业发展研究院赛迪顾问认为&#xff0c;我国智能制造发展有三个趋势&#xff0c;即企业向系统方案解决供应商转型&#xff0c;生产更加柔性化、定制化&#xff0c;“互联网”促进价值链向价值网转变。一、智能制造装备企业逐步向系统方案解决供应…

Android开发中目前流行控件和知识点总结

1、SlidingMenu 滑动菜单 应用案例&#xff1a;Facebook 、 Path 2.0 、人人、网易新闻 下载地址&#xff1a; https://github.com/jfeinstein10/SlidingMenu 2、PullToRefresh 下拉刷新 应用案例&#xff1a;新浪微博 等等 &#xff0c;这个很长用哦&#xff01; 下载地址&…

李德毅:“反用驾驶脑”测认知能力,谁说酒驾一定违规?

来源&#xff1a;德先生摘要&#xff1a;从2016年阿尔法狗成功挑战人类智慧的这场世纪大战开始&#xff0c;“人工智能”便引发了全世界的关注。从2016年阿尔法狗成功挑战人类智慧的这场世纪大战开始&#xff0c;“人工智能”便引发了全世界的关注。为了让中国在人工智能这场“…

谷歌无人车十年记:理想背后的骨感现实 | 厚势汽车

来源&#xff1a;The Information编译&#xff1a;厚势摘要&#xff1a;即使是近 10 年后&#xff0c;Waymo 仍远没有实现真正的 L4&#xff0c;即使是在相对简单的郊区环境下。「全自动驾驶的汽车来了&#xff01;」去年 11 月&#xff0c;Waymo 搞了一个大新闻。公司宣布自己…

自定义控件之瀑布流与水波纹实现

本文主要讲述了利用android自定义控件实现瀑布流与水波纹效果 首先为实现效果&#xff0c;应了解touch事件在android中的传递机制 在执行touch事件时 首先执行dispatchTouchEvent方法&#xff0c;执行事件分发。 再执行onInterceptTouchEvent方法&#xff0c;判断是否中断事件…

医学信息学相关术语、缩语及专业名词

医学信息学相关术语、缩语及专业名词 很棒哦&#xff0c;分享了&#xff0c;需要的可以去瞅瞅http://www.med-informatics.cn/MedInfo_gloss/medinfo_gloss_p1.htm如果你到它的完整上再逛逛&#xff0c;发觉还有很多好资源&#xff0c;譬如&#xff1a;http://www.med-informat…