PhoneGap与Android之间通信原理
来源:互联网 发布:淘宝怎么买vr资源 编辑:程序博客网 时间:2024/04/30 18:49
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;
- ServerSocketwaitSocket = new ServerSocket(0);
- port = waitSocket.getLocalPort();
- token = UUID.randomUUID().toString();
- while(active)
- {
- Socketconnection = waitSocket.accept();
- BufferedReaderxhrReader = new BufferedReader(new InputStreamReader(connection.getInputStream()), 40);
- DataOutputStreamoutput = new DataOutputStream(connection.getOutputStream());
- Stringrequest = xhrReader.readLine();
- Stringresponse = "";
- 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 ";
- Stringjs = 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之间通信实现原理的内容介绍完了,希望通过本文的学习能对你有所帮助!
- PhoneGap与Android之间通信原理
- 【PhoneGAP学习】Android PhoneGap框架(3)--重要知识点的预先学习 (JS层与 Native 层之间通信)
- NFC:Arduino、Android与PhoneGap近场通信
- NFC:Arduino、Android与PhoneGap近场通信
- android中Fragment与Activity之间通信原理以及例子
- android中fragment与activity之间通信原理以及例子
- android中fragment与activity之间通信原理以及例子
- android中fragment与activity之间通信原理以及例子
- android中fragment与activity之间通信原理以及例子
- android中fragment与activity之间通信原理以及例子
- Android 与 PC 之间的通信
- android activity与service之间的通信
- android中fragment与activity之间通信
- Android Service与Activity之间通信方式
- Unity3D与Android之间的通信
- Android客户端与服务器之间的通信
- android Activity与Fragment之间的通信
- Android Service与Activity之间通信
- UI移动和渐隐渐现
- 解决PLSQL developer 提示乱码问题
- 简单的带动画渐隐效果
- c++ 运算符优先级 来自 c++ primer
- MSRA面经
- PhoneGap与Android之间通信原理
- Java框架介绍:Quartz从入门到进阶
- WPF实现DoEvents
- 获得通讯录中联系人的所有属性
- Java hashCode
- 所用AD芯片的比较
- webstorm
- WPF中的ListBox按块显示元素
- 用 Lucene 加速 Web 搜索应用程序的开发