PhoneGap实现javascript脚本调用本地设备的接口
来源:互联网 发布:淘宝宝贝下载 编辑:程序博客网 时间:2024/05/16 17:34
通过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\r\n\r\n ";
- } else
- {
- response = "HTTP/1.1 200 OK\r\n\r\n";
- 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\r\n\r\n ";
- }
- } else
- {
- response = "HTTP/1.1 403 Forbidden\r\n\r\n ";
- }
- } else
- {
- response = "HTTP/1.1 400 Bad Request\r\n\r\n ";
- }
- output.writeBytes(response);
- output.flush();
- }
- output.close();
- xhrReader.close();
这是java代码,监听javascript代码发送过来的请求
3、
- appView.loadUrl("javascript:PhoneGap....");
通过loadUrl来执行javascript代码。
- PhoneGap实现javascript脚本调用本地设备的接口
- phonegap-android硬件设备的调用
- Extending PhoneGap with native plugins for iOS (通过phonegap plugin的方式实现ios和javascript的互相调用)
- Phonegap通过JS访问本地接口的两种方法
- PhoneGap(Cordova)之js调用本地native的方法
- Lua脚本接入Android使用JNI调用本地接口,需要注意的问题
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、javascript等脚本的实现
- 在C#中调用VBScript、javascript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 美轮美奂的phonegap(八)---写phonegap插件实现本地的代码
- 用javascript实现调用本地用户程序
- phonegap js 和 本地代码 调用原理
- phonegap插件实现对android原生的调用
- 14.1-1 动物
- Servlet调用过程详解
- Activity的四种launchMode
- Android UI开发第二十八篇——Fragment中使用左右滑动菜单
- java.util.ConcurrentModificationException 解决办法
- PhoneGap实现javascript脚本调用本地设备的接口
- Java SE 自学笔记2 之流程控制
- .net中Web应用程序和web网站的区别
- UDP广播与多播
- 20个值得收藏的网页设计开放课件
- 新建Android项目报错(项目上有红色叉叉)
- CVSNT版本管理配置
- __declspec用法详解
- android开机自动启动service或者activity