PhoneGap与Android之间通信实现原理是本我要介绍的内容,主要来了解PhoneGap实现原理。PhoneGap为 移动开发者带来了全新的开发模式,使用javascript调用移动设备的本地接口,这样,你就可以在js中调用你手机的摄像头,文件系统等等功能,理论 上来说,你的本地应用程序可以访问的接口都可以通过javascript来调用了。不得不说,这样功能实在是很强大。既能使用javascript,html等web技术来实现程序,又能通过统一的接口来调用本地接口。兼具了web应用与app应用的特点。
那么PhoneGap是如何实现javascript脚本调用本地设备的接口的呢?
相信大家都很想知道吧,那我就少点废话了,一句话,通过ajax发送请求,实现脚本对设备发送消息;设备接受到消息处理后通过webView的loadUrl方法(这是Android系统下的浏览器控件对象)执行脚本实现脚本的回调。
主要的代码有下面三处:
1、
-
xmlhttp.open("GET", "http://127.0.0.1:"+PhoneGap.JSCallbackPort+"/"+PhoneGap.JSCallbackToken , true);
这是phonegap.js里面的代码,通过ajax请求,发送消息给设备。 2、
-
active = true;
-
ServerSocket
waitSocket
= new
ServerSocket(0);
-
port
= waitSocket.getLocalPort();
-
token
= UUID.randomUUID().toString();
- while(active)
- {
-
Socket
connection
= waitSocket.accept();
-
BufferedReader
xhrReader
= new
BufferedReader(new InputStreamReader(connection.getInputStream()), 40);
-
DataOutputStream
output
= new
DataOutputStream(connection.getOutputStream());
-
String
request
= xhrReader.readLine();
-
String
response
= "";
- if(active
&& request != null)
- {
- if(request.contains("GET"))
- {
- String
requestParts[] = request.split(" ");
-
if(requestParts.length
== 3 && requestParts[1].substring(1).equals(token))
- {
- synchronized(this)
- {
- do
- {
- if(!empty)
- break;
- try
- {
- wait(10000L);
- break;
- }
- catch(Exception
e) { }
- }
while(true);
- }
- if(active)
- {
- if(empty)
- {
-
response
= "HTTP/1.1 404 NO DATA ";
- }
else
- {
-
response
= "HTTP/1.1 200 OK ";
-
String
js
= getJavascript();
- if(js
!= null)
-
response
= (new StringBuilder()).append(response).append(URLEncoder.encode(js, "UTF-8")).toString();
- }
- }
else
- {
-
response
= "HTTP/1.1 503 Service Unavailable
";
- }
- }
else
- {
-
response
= "HTTP/1.1 403 Forbidden
";
- }
- }
else
- {
-
response
= "HTTP/1.1 400 Bad Request
";
- }
- output.writeBytes(response);
- output.flush();
- }
- output.close();
- xhrReader.close();
这是java代码,监听javascript代码发送过来的请求
3、
-
appView.loadUrl("javascript:PhoneGap....");
通过loadUrl来执行javascript代码。
小结:PhoneGap与Android之间通信实现原理的内容介绍完了,希望通过本文的学习能对你有所帮助!
分享到:
相关推荐
通过自定义plugin插件实现了javascript与Android的交互。
■ 用PhoneGap和它的NFC插件写Android上的NFC应用程序用例 ■ 深入了解NDEF结构:测试已有的写标签程序,然后写自己的标签程序 ■ 用PhoneGap事件监听器来监听和过滤NDEF消息 ■ 写一个完整的Android应用程序来控制...
PhoneGap Android is an Android application library that allows for PhoneGap-based projects to be built for the Android Platform. PhoneGap-based applications are, at the core, an application written in...
phoneGap-android实现拍照和选择图库中的图片功能。绝对可以运行。
资源名称:NFC Arduino、Android与PhoneGap近场通信内容简介:《NFC:Arduino、Android与PhoneGap近场通信》将带你走入近场通信(NFC)的世界,这是一种快速发展的技术,它能够让设备近距离交换数据或使用无线电信号...
phonegap开发中JS与Android之间的交互
android+js+css+html+jquery实现的android程序。详细见代码
使用phonegap调用android插件实现GPS实时定位
phonegap-android-master
android+Phonegap开发环境搭建android+Phonegap开发环境搭建android+Phonegap开发环境搭建android+Phonegap开发环境搭建
NFC Arduino Android与PhoneGap近场通信
介绍PhoneGap的原理,优势,以及和其他平台的对比
phonegap相机android 此篇文章以cordova 3.3版本编写 据我总结核心步骤: 创建工程 ; 下载插件 ;编译工程; 调用插件; 按照如下步骤就能生产出代码: 打开cmd 控制台 1 使用命令行 建立phonegap工程 2 ...
phoneGap实现android程序开发代码
实现android平台phonegap登录例子,内容简单,适合初学者.
4.复制phonegap中android目录下的xml文件夹到 /res下 5.android默认的项目是针对native app的,所以要用web app(cordova)的话,必须修改它的引用文件。 5.1引用加载cordova-1.7.0.jar,这时候可以按F5刷新工程。 ...
phonegap在android的录音照相录像demo,功能简单易懂,主要看懂html里的就行,小白笔记大神勿喷
使用jQuery Mobile + PhoneGap 开发Android应用程序
一个完整的phonegap与android的例子。用在pad上,包含一些自定义插件。
phoneGap与android的activity交互例子,互相调用函数,js,java的交互.zip