上周用PhoneGap和JQuery做了一个Android的例子。 这个例子用来说明如何读取一个应用的配置文件。
开发环境的搭建就不在这里描述了。
先看一下代码布局:
所有的工作都在assets/www/目录下面。js目录包含了三个js文件:phonegap.js , jquery.js , property.js.
property目录下面有一个app.properties文件。这个文件里面有我们这个app要用到一些配置项。property.js的作用就是把这个配置文件的内容读出来。file.html是我们的应用的入口。
App.java就是把file.html load进来。
import com.phonegap.DroidGap;
import android.os.Bundle;
public class App extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/file.html");
}
}
file.html:
<!DOCTYPE html>
<html>
<head>
<title>Property Files</title>
<script type="text/javascript" charset="utf-8" src="js/phonegap.1.4.1.js"></script>
<script type="text/javascript" charset="utf=8" src="js/jquery-1.7.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/property.js"></script>
<script type="text/javascript" charset="utf-8">
function init(){
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
var prop = new PropertyObj();
prop.loadPropertyFile();
navigator.notification.alert("app name:" + prop.name);
}
</script>
</head>
<body onload="init();">
<h1>Example</h1>
<p>Property File</p>
</body>
</html>
property.js :
function PropertyObj(){
this.name = "";
};
PropertyObj.prototype.getName = function() {
return this.name;
};
PropertyObj.prototype.loadPropertyFile = function() {
var name = "";
$.ajax({
url: 'property/app.properties',
async: false,
success: function(data){
console.log("load success.");
var propArray = data.split("\n");
var length = propArray.length;
for(var i=0;i<length;i++){
console.log(propArray[i]);
}
//for example
name = propArray[0];
},
error: function(){
//should use default property.
console.log("load failed.");
}
});
this.name = name;
};
app.properties
app=NewAPP
PhoneGap支持File类型,可以直接读取Android系统里的文件。在这里,并没有用这种方式。而是用Ajax调用的方式来读取www目录下的配置文件。这样做的好处就是配置文件和我们的程序在一个包里面,不依赖具体手机或者平台的文件目录结构。