利用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 info
PhoneGap.exec(successCallback, errorCallback, "HM_service", "test", [options]);
}; HmCommen.prototype.testLogin = function(successCallback, errorCallback,options) {
// Get info
PhoneGap.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 { @Override
public PluginResult execute(String arg0, JSONArray arg1, String arg2) {
// TODO Auto-generated method stub
JSONObject 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 block
e.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

运行结果:

android之phonegap入门的更多相关文章

  1. 使用 Eclipse PhoneGap 构建 Android 应用程序入门

    Eclipse 是一种支持多种技术的开源集成开发环境 (IDE),但本文重点介绍 Java 支持,这也是 Android 应用程序的“母语”.Android 是 Google 发布的开源移动操作系统. ...

  2. NFC:Arduino、Android与PhoneGap近场通信

    NFC:Arduino.Android与PhoneGap近场通信(第一本全面讲解NFC应用开发的技术著作移动智能设备近距离通信编程实战入门) [美]Tom Igoe(汤姆.伊戈),Don Colema ...

  3. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  4. Android Studio单元测试入门

    Android Studio单元测试入门 通常在开发Android app的时候经常会写一些小函数并验证它是否运行正确,通常做法我们是把这个函数放到某个界面(Activity上)执行一下,运行整个工程 ...

  5. (转)android平台phonegap框架实现原理

    (原文)http://blog.csdn.net/wuruixn/article/details/7405175 android平台phonegap框架实现原理 分类: Android2012-03- ...

  6. 下面就介绍下Android NDK的入门学习过程(转)

    为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大. 2. 在NDK中调用第三方C/C++库,因为大部分的开源库 ...

  7. Android渗透测试Android渗透测试入门教程大学霸

    Android渗透测试Android渗透测试入门教程大学霸 第1章  Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...

  8. 一看就懂的Android APP开发入门教程

    一看就懂的Android APP开发入门教程 作者: 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤 ...

  9. (转)Android: NDK编程入门笔记

    转自: http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html 为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代 ...

随机推荐

  1. iOS 知识点梳理

    OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错 ...

  2. Activity的成员变量

    // set by the thread after the constructor and before onCreate(Bundle savedInstanceState) is called. ...

  3. javascript面向对象方式,调用属性和方法

    1.定义一个Person类,其中的属性和方法如果想对外开放,需要使用this,如: var Person=function(name,age,sex){ var psex='Boy'; if(sex) ...

  4. 织梦DedeCMS删除所有栏目或文章后,新建ID不从1开始的解决方法

    这个修改方法很简单,从模板无忧那里找到的,只需要在后台系统-SQL命令行工具里面运行以下语句即可,不用采用笨方法重新安装织梦CMS了. 删除所有栏目,新建ID从1开始: ALTER TABLE `de ...

  5. find只查当前目录 和 -exec和xargs区别

    1.find默认查找当前目录和子目录,通过maxdepth限制只查当前目录: find . -maxdepth 1 -type f -name "*.php" 2. find . ...

  6. apache安装后编译新模块

    1.下载对应版本的源码包 2.解压后找到modules/mappers目录并进入 3.运行如下命令自动编译.安装和修改httpd.conf文件: /usr/sbin/apxs -c -i -a mod ...

  7. Java Socket 网络编程心跳设计概念

    Java Socket 网络编程心跳设计概念   1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...

  8. jQuery.isEmptyObject() 函数详解

    所谓"空对象",即不包括任何可枚举(自定义)的属性.简而言之,就是该对象没有属性可以通过for...in迭代. 该函数属于全局jQuery对象. 语法 jQuery 1.4 新增该 ...

  9. A+B Again(在某个数中找大于m的最小约数)

    A+B Again Accepted : 15   Submit : 243 Time Limit : 1000 MS   Memory Limit : 65536 KB  题目描述 上次趣味赛小明的 ...

  10. Rescue

    1039: Rescue Time Limit: 1 Sec  Memory Limit: 32 MBSubmit: 1320  Solved: 306 Description Angel was c ...