成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PhoneGap與Android之間通信實(shí)現(xiàn)原理

移動(dòng)開發(fā)
PhoneGap與Android之間通信實(shí)現(xiàn)原理是本我要介紹的內(nèi)容,主要來了解PhoneGap實(shí)現(xiàn)原理,具體內(nèi)容的實(shí)現(xiàn)來看本文詳解。

PhoneGapAndroid之間通信實(shí)現(xiàn)原理是本我要介紹的內(nèi)容,主要來了解PhoneGap實(shí)現(xiàn)原理。PhoneGap為移動(dòng)開發(fā)者帶來了全新的開發(fā)模式,使用javascript調(diào)用移動(dòng)設(shè)備的本地接口,這樣,你就可以在js中調(diào)用你手機(jī)的攝像頭,文件系統(tǒng)等等功能,理論上來說,你的本地應(yīng)用程序可以訪問的接口都可以通過javascript來調(diào)用了。不得不說,這樣功能實(shí)在是很強(qiáng)大。既能使用javascript,html等web技術(shù)來實(shí)現(xiàn)程序,又能通過統(tǒng)一的接口來調(diào)用本地接口。兼具了web應(yīng)用與app應(yīng)用的特點(diǎn)。

那么PhoneGap是如何實(shí)現(xiàn)javascript腳本調(diào)用本地設(shè)備的接口的呢?

相信大家都很想知道吧,那我就少點(diǎn)廢話了,一句話,通過ajax發(fā)送請(qǐng)求,實(shí)現(xiàn)腳本對(duì)設(shè)備發(fā)送消息;設(shè)備接受到消息處理后通過webView的loadUrl方法(這是Android系統(tǒng)下的瀏覽器控件對(duì)象)執(zhí)行腳本實(shí)現(xiàn)腳本的回調(diào)。

主要的代碼有下面三處:

1、

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

 這是phonegap.js里面的代碼,通過ajax請(qǐng)求,發(fā)送消息給設(shè)備。
 
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代碼,監(jiān)聽javascript代碼發(fā)送過來的請(qǐng)求

3、

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

通過loadUrl來執(zhí)行javascript代碼。

小結(jié):PhoneGapAndroid之間通信實(shí)現(xiàn)原理的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2017-03-28 10:20:24

Docker通信分析

2021-08-11 14:31:52

鴻蒙HarmonyOS應(yīng)用

2009-12-22 09:11:31

WCF雙向通信

2011-09-14 09:20:03

PhonegapAndroid平臺(tái)

2023-08-01 08:43:29

Python多線程

2009-12-03 18:15:04

Linux

2009-09-10 11:26:59

C# form

2011-03-10 09:07:47

liferayportlet

2012-12-24 14:40:54

iosjs

2019-06-25 10:53:06

AndroidFlutter通信

2011-09-05 15:09:06

Android平臺(tái)Phonegap

2011-04-22 10:30:11

VMwareWindowsFTP

2012-03-07 11:23:09

PhoneGapAndroid代碼交互

2009-07-15 16:05:04

IP通信捷思銳科技Zed-3

2022-12-11 20:09:50

網(wǎng)絡(luò)編程通信

2011-09-13 10:07:10

PhoneGap

2011-12-20 15:52:03

PhoneGap架構(gòu)基礎(chǔ)工作原理

2011-06-22 17:49:35

Linux Qt 串口

2024-04-03 08:25:52

2018-10-11 05:07:19

物聯(lián)網(wǎng)通信IOT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人亚洲精品久久久久软件 | 国产精品久久久久久中文字 | 欧美日韩专区 | 久久久久www | 免费v片在线观看 | 日本字幕在线观看 | 羞羞色在线观看 | 99国产精品一区二区三区 | 亚洲精品中文字幕在线观看 | av一区二区三区四区 | 西西裸体做爰视频 | 精品国产精品一区二区夜夜嗨 | 97福利在线| 欧美日韩成人在线观看 | 91视频在线 | 日本一区二区在线视频 | 国产精品资源在线 | 狠狠综合久久av一区二区小说 | 成人在线观看免费视频 | 国产视频久久 | 国产精品久久久久久久久久软件 | 亚洲欧美bt | 午夜精品视频 | 日本一区二区在线视频 | 在线视频亚洲 | 久久久久无码国产精品一区 | 国产区精品视频 | 91在线免费观看网站 | 嫩草影院网址 | 欧美一区二区免费 | 国产精品久久久久久久免费大片 | 一级特黄色毛片 | 日韩久久久久久 | 欧美激情啪啪 | 视频1区 | 亚洲精品欧美精品 | 在线观看视频一区二区三区 | 国产一区二区在线免费观看 | 久久久精品综合 | 国产色网站 | 国产精品久久久久久久岛一牛影视 |