使用PhoneGap开发Android程序

来源:互联网 发布:淘宝宝贝描述评分 编辑:程序博客网 时间:2024/05/19 21:16

不得不说,正是因为HTML5/CSS3/JS的强大才促成了PhoneGap的伟大。可以做出那么酷的应用,然后变成本地应用才有意义。


简介

PhoneGap是一款开源的手机应用开发平台,它仅仅只用HTML和JavaScript语言就可以制作出能在多个移动设备上运行的应用。 PhoneGap将移动设备本身提供的复杂的API进行了抽象和简化,提供了一系列丰富的API供开发者调用,只要你会HTML和Javascript或 者Java语言,就可以利用PhoneGap提供的API去调用各种功能,制作出在各种手机平台上运行的应用。

目前这类开发移动程序框架还是很多的,除PhoneGap外还有比如Web App、Titanium、MonoTouch、Native App等。试用了PhoneGap,感觉还是很不错的。


PhoneGap开发环境搭建(针对安卓平台)


一、安装
在安装PhoneGap开发环境之前,需要先安装以下框架:
1.Java SDK
2.Eclipse
3.Android SDK
4.ADT Plugin
5.PhoneGap

 

说明:
1.Java SDK直接下载安装即可,没什么可说的,安装不了就是人品问题了;
2.Eclipse 也是直接下载安装,建议为classic版的;
3.Android SDK和ADT Plugin安装完成后,重启eclipse进入Window->Android SDK Manager进行选择要安装的Android开发框架进行安装

 

 

4.PhoneGap包不用安装,直接解压。

 

二、第一个PhoneGap项目
1.在eclipse中新建Android Project,名字神马的随便取吧;

 

2.在项目的目录下,建两个文件夹:
/libs
/assets/www

 

3.进入将刚刚下载并解压的PhoneGap包里Anroid目录,我们需要的资源都在这个目录下。
 将phonegap-x.x.x.js这个js文件(具体名称视当时下载的版本而定)copy到/assets/www目录下,
 把phonegap.jar文件copy到/libs目录下。
 再把xml目录copy到android项目的res目录下。

 

4.在/assets/www下建立index.html文件,内容看起来像这样: 
<!DOCTYPE HTML> <html><head><title>PhoneGap</title><script type="text/javascript" charset="utf-8" src="phonegap-x.x.x.js"></script></head><body><h1>Hello World</h1></body></html>

5.将以下权限配置的xml内容copy到AndroidManifest.xml文件中:
<supports-screensandroid: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" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

 

6.将以下内容添加到AndroidManifest.xml文件的activity标签中:

android:configChanges="orientation|keyboardHidden

====================解释上面这句话======================================================

android:configChanges="orientation|keyboardHidden"的使用

今天看到一个Android应用的源码,发现有一段这样的代码,平时开发的时候很少用的,后来了解到如果使用了这个属性,当横竖屏切换的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不是重新执行onCreate方法,如果没有使用这个属性就会重新调用onCreate方法了。

=======================================================================================
7.AndroidManifest.xml最后看起来会像这样:

 

8.在刚刚新建的Android Project中找到libs目录并在phonegap-x.x.x.jar上点击右键,选择 Build Path->Add to Build Path

 

9.最后再修改下src下的Java主文件:
1)添加import com.phonegap.*;(或者是import org.apache.cordova.DroidGap;)
2)将类改成继承为DroidGap;
3)删掉import android.app.Activity;
4)把setContentView()这行替换为super.loadUrl("file:///android_asset/www/index.html");
5)最后看起来就像这样:

然后就可以试着运行一下,成功的话会出现Hello World的界面。 

 

 

三、PhoneGap Plugin
PhoneGap的插件机制其实就是一个android类导出为jar文件,然后再被PhoneGap的项目引用,再通过js来调API:
1.创建一个Android Project;
2.打开Java主文件,将继承的类改为Plugin;
3.引入以下类:
import com.phonegap.api.Plugin;

import com.phonegap.api.PluginResult;
import com.phonegap.api.PluginResult.Status;

 

4.重写父类的execute方法:
复制代码
    public PluginResult execute(String action, JSONArray data, String callbackId) {

     PluginResult pr=null;
     if(action.equals("method1")){
         pr=new PluginResult(Status.IO_EXCEPTION,"method1");
        }else if(action.equals("method2")){
         pr=new PluginResult(Status.OK,"method2");
        }
            
     return pr;
     }

复制代码

 

其中,第一个参数action可以作为分类调用时的类型,我们就可以用该参数来实现多方法功能。
返回的PluginResult实例可以通过状态Status类型的控制来描述当前结果的执行状态。
最后,代码看起来可能像这样:

 

 

5.将该类导出为jar(在类文件上右键->Export->JAR File)
6.回到之前创建的PhoneGap项目中,按上面添加jar包的方法再将该jar添加到工程中。
7.在/res/xml/plugins.xml文件中添加以下内容:
<plugin name="PluginTest" value="aralork.moblie.plugin.PluginTest"/>

 

name是你在调用时要使用的类名,value是类在jar包中的全路径

 

8.最后再打开assets/www/index.html文件,写入类似于这样的内容:
 
复制代码
<script type="text/javascript" charset="utf-8" src="phonegap-x.x.x.js"></script>
         <script type="text/javascript">
            PhoneGap.exec(successCallback, 
//成功后的回调方法
                     failureCallback, //失败后的回调方法
                     'PluginTest',//刚才配置的类名
                     'method1'//方法名称,就是之前提到的action参数
                     ["/sdcard"]); //sdcard路径
                     
            
function successCallback(data){
                alert(
"data:"+data);
            }
            
            
function failureCallback(data){
                alert(
"error:"+data);
            }
        
</script>
复制代码

人品没问题的话,这样就能run起来了。。。。。。。

相关链接:

个人技术博客:http://www.ynihao.com/articles/view/1581

PhoneGap 官方网站:http://www.phonegap.com 

  PhoneGap 插件示例:http://wiki.phonegap.com/w/page/36753494/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20Android


原创粉丝点击