PhoneGap实现javascript脚本调用本地设备的接口

来源:互联网 发布:淘宝宝贝下载 编辑:程序博客网 时间:2024/05/16 17:34

通过ajax发送请求,实现脚本对设备发送消息;设备接受到消息处理后通过webView的loadUrl方法(这是Android系统下的浏览器控件对象)执行脚本实现脚本的回调。


 

1、

  1. xmlhttp.open("GET", "http://127.0.0.1:"+PhoneGap.JSCallbackPort+"/"+PhoneGap.JSCallbackToken , true); 

这是phonegap.js里面的代码,通过ajax请求,发送消息给设备。


2、      

  1. active = true;  
  2.             ServerSocket waitSocket = new ServerSocket(0);  
  3.             port = waitSocket.getLocalPort();  
  4.             token = UUID.randomUUID().toString();  
  5.             while(active)   
  6.             {  
  7.                 Socket connection = waitSocket.accept();  
  8.                 BufferedReader xhrReader = new BufferedReader(new InputStreamReader(connection.getInputStream()), 40);  
  9.                 DataOutputStream output = new DataOutputStream(connection.getOutputStream());  
  10.                 String request = xhrReader.readLine();  
  11.                 String response = "";  
  12.                 if(active && request != null)  
  13.                 {  
  14.                     if(request.contains("GET"))  
  15.                     {  
  16.                         String requestParts[] = request.split(" ");  
  17.                         if(requestParts.length == 3 && requestParts[1].substring(1).equals(token))  
  18.                         {  
  19.                             synchronized(this)  
  20.                             {  
  21.                                 do  
  22.                                 {  
  23.                                     if(!empty)  
  24.                                         break;  
  25.                                     try  
  26.                                     {  
  27.                                         wait(10000L);  
  28.                                         break;  
  29.                                     }  
  30.                                     catch(Exception e) { }  
  31.                                 } while(true);  
  32.                             }  
  33.                             if(active)  
  34.                             {  
  35.                                 if(empty)  
  36.                                 {  
  37.                                     response = "HTTP/1.1 404 NO DATA\r\n\r\n ";  
  38.                                 } else  
  39.                                 {  
  40.                                     response = "HTTP/1.1 200 OK\r\n\r\n";  
  41.                                     String js = getJavascript();  
  42.                                     if(js != null)  
  43.                                         response = (new StringBuilder()).append(response).append(URLEncoder.encode(js, "UTF-8")).toString();  
  44.                                 }  
  45.                             } else  
  46.                             {  
  47.                                 response = "HTTP/1.1 503 Service Unavailable\r\n\r\n ";  
  48.                             }  
  49.                         } else  
  50.                         {  
  51.                             response = "HTTP/1.1 403 Forbidden\r\n\r\n ";  
  52.                         }  
  53.                     } else  
  54.                     {  
  55.                         response = "HTTP/1.1 400 Bad Request\r\n\r\n ";  
  56.                     }  
  57.                     output.writeBytes(response);  
  58.                     output.flush();  
  59.                 }  
  60.                 output.close();  
  61.                 xhrReader.close(); 


这是java代码,监听javascript代码发送过来的请求

3、

  1. appView.loadUrl("javascript:PhoneGap...."); 

通过loadUrl来执行javascript代码。


原创粉丝点击