我强烈建议使用 PhoneGap 来通过 HTML5 进行编程。这并不难。
编辑:需要执行以下几个步骤:
1. 添加 cordova 作为库(在我的情况下是 cordova-2.5.0.jar)。
2. 创建一个类来处理返回的 JavaScript 调用(参见下面的 JSComm.java)。
3. 创建一个带有 webview 的活动 DroidGap(参见下面);请注意,Apache 在更新版本中将其重命名为 CordovaActivity。
4. 创建一个 JavaScript 文件(参见下面)。
5. 创建一个 HTML 页面(参见下面),其中包括对您的 JavaScript 文件和 cordova JavaScript 文件(在我的情况下是 cordova-2.5.0.js)的引用。
6. 在 /res/xml/config.xml 中添加一些 xml(参见下面)。
7. 不要忘记将您的活动添加到清单中。
JSComm.java
public class JSComm extends CordovaPlugin {
public boolean execute(final String action, final JSONArray args, CallbackContext callbackContext) {
final CallbackContextWrapper callbackContextWrapper = new CallbackContextWrapper(callbackContext);
if (action.equals("MyString")
return handleIt(args.getJSONObject(0));
else
return false;
}
}
MyCordovaActivity.java
public class FormViewer extends DroidGap {
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
super.appView.getSettings().setJavaScriptEnabled(true);
super.appView.getSettings().setSupportZoom(true);
super.appView.getSettings().setBuiltInZoomControls(true);
super.appView.getSettings().setDisplayZoomControls(false);
super.appView.getSettings().setUseWideViewPort(true);
super.appView.getSettings().setLoadWithOverviewMode(true);
super.loadUrl("file:///" + myHTMLFilePath);
}
public void nextPage() {
this.sendJavascript("nextPage()");
}
}
JSComm.js
function nextPage() {
var inputted = trytogetinputs();
cordova.exec(
null,
function(args) {
addErrorBorders(args);
},
"JSComm",
"MyString",
[inputted]
);
}
您的HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="common.css">
<script type="text/javascript" src="../../jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../../cordova-2.5.0.js"></script>
<script type="text/javascript" charset="utf-8" src="../../javacomm.js"></script>
<script type="text/javascript" src="../../jquery-ui.min.js"></script>
<script type="text/javascript" src="../../jquery.signature.min.js"></script>
</head>
<body background="0.png">...etc...</body></html>
xml
<?xml version="1.0" encoding="utf-8"?>
<cordova>
<access origin="http://127.0.0.1*"/>
<access origin=".*"/>
<content src="index.html" />
<log level="DEBUG"/>
<preference name="useBrowserHistory" value="true" />
<preference name="exit-on-suspend" value="false" />
<preference name="fullscreen" value="false" />
<plugins>
<plugin name="App" value="org.apache.cordova.App"/>
<plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/>
<plugin name="Device" value="org.apache.cordova.Device"/>
<plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/>
<plugin name="Compass" value="org.apache.cordova.CompassListener"/>
<plugin name="Media" value="org.apache.cordova.AudioHandler"/>
<plugin name="Camera" value="org.apache.cordova.CameraLauncher"/>
<plugin name="Contacts" value="org.apache.cordova.ContactManager"/>
<plugin name="File" value="org.apache.cordova.FileUtils"/>
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
<plugin name="Notification" value="org.apache.cordova.Notification"/>
<plugin name="Storage" value="org.apache.cordova.Storage"/>
<plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/>
<plugin name="Capture" value="org.apache.cordova.Capture"/>
<plugin name="Battery" value="org.apache.cordova.BatteryListener"/>
<plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/>
<plugin name="Echo" value="org.apache.cordova.Echo" />
<plugin name="Globalization" value="org.apache.cordova.Globalization"/>
<plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser"/>
<plugin name="JSComm" value="com.example.application.JSComm"/>
</plugins>
</cordova>