精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HarmonyOS JS FA 調用 Java PA 機制

開發 后端 OpenHarmony
本項目使用模擬文件下載進度變化的功能來給你展示JS FA訂閱JAVA PA的能力,訂閱之后JS可以一直實時獲取到JAVA返回的進度數據來更新JS界面的進度條。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

實現效果

一、項目介紹

本項目使用模擬文件下載進度變化的功能來給你展示JS FA訂閱JAVA PA的能力,訂閱之后JS可以一直實時獲取到JAVA返回的進度數據來更新JS界面的進度條。另外,文件模擬下載完成跳轉到一個求積的頁面,在這個頁面輸入兩個數,點擊求積按鈕會給你展示JS FA調用JAVA PA的能力,此處并不像訂閱一樣可以一直獲取到java返回的數據,采用的模式是調用一次返回一次數據。

通過本項目,是想讓你了解如下知識點:

​ 1) FeatureAbility.callAbility(OBJECT):調用PA能力。

​ 2) FeatureAbility.subscribeAbilityEvent(OBJECT, Function):訂閱PA能力。

​ 3) FeatureAbility.unsubscribeAbilityEvent(OBJECT):取消訂閱PA能力。

二、代碼結構解讀

HarmonyOS JS FA 調用 JAVA PA 機制-鴻蒙HarmonyOS技術社區

1、java/ServiceAbility : java與js的通信代碼;

2、java-RequestParam :請求參數的實體類;

3、js-pages-index.hml : js模擬文件下載頁;

4、js-pages-index.js : js訂閱java pa代碼;

5、js-calculate-calculate.hml : js求積頁面;

6、js-calculate-calculate.js : 調用java pa代碼;

7、config.json : js、java的配置文件,里面包括頁面配置、service配置、窗體配置等等。

三、新建js project

右擊—new—new project 。

HarmonyOS JS FA 調用 JAVA PA 機制-鴻蒙HarmonyOS技術社區

選擇模板—next。

HarmonyOS JS FA 調用 JAVA PA 機制-鴻蒙HarmonyOS技術社區

輸入項目名稱、選擇項目類型(單選)、api版本,設備類型,點擊finish即可。

HarmonyOS JS FA 調用 JAVA PA 機制-鴻蒙HarmonyOS技術社區

四、訂閱PA解讀

點擊下載按鈕,向java端發送訂閱請求。

  1. /** 
  2.  * 請求開啟訂閱模式 
  3.  */ 
  4. subscribe: async function() { 
  5.     this.isShow = true; // 顯示進度條內容 
  6.     var that = this; 
  7.  
  8.     var actionData = {}; 
  9.     actionData.firstNum = that.message; 
  10.  
  11.     var action = {}; 
  12.     action.bundleName = 'com.example.javajscommunication'; // Ability的包名稱,需要與PA端匹配,區分大小寫 
  13.     action.abilityName = 'com.example.javajscommunication.ServiceAbility'; // Ability名稱,需要與PA端匹配,區分大小寫 
  14.     action.messageCode = ACTION_MESSAGE_CODE_PLUS_SUB; // Ability操作碼(操作碼定義PA的業務功能,需要與PA端約定) 
  15.     action.data = actionData; // 發送到Ability的數據,數據字段名稱需要與PA端約定 
  16.     action.abilityType = ABILITY_TYPE_EXTERNAL; // Ability類型,對應PA端不同的實現方式 
  17.     action.syncOption = ACTION_SYNC; // PA側請求消息處理同步/異步選項 0:同步方式,默認方式。 1:異步方式 
  18.  
  19.     await FeatureAbility.subscribeAbilityEvent(actionfunction (callbackData) { 
  20.         var callbackJson = JSON.parse(callbackData); // json字符串反序列化 
  21.         that.message = callbackJson.data.abilityEvent; 
  22.         if (that.message == 100) { // message 為100時進行跳轉計算頁面 
  23.             router.push({ 
  24.                 uri: "pages/calculate/calculate" 
  25.             }) 
  26.             that.unsubscribe(); // 取消訂閱 
  27.             that.isShow = false; // 隱藏進度條 
  28.         } 
  29.     }) 

java端在ServiceAbility中對訂閱請求進行處理,在內部類MyRemote的onRemoteRequest方法中根據code參數來判斷請求類型進行相應處理。

  1. case ACTION_MESSAGE_CODE_PLUS_SUB: { 
  2.     go = true; // 開啟可以下載狀態 
  3.     remoteObjectHandler = data.readRemoteObject(); // 獲取請求參數對象 
  4.     String zsonStr = data.readString(); // 獲取參數字符串 
  5.  
  6.     try { 
  7.         param = ZSONObject.stringToClass(zsonStr, RequestParam.class); // 字符串對象轉成RequestParam實例 
  8.     } catch (RuntimeException e) { 
  9.  
  10.     } 
  11.     startNotify(param); // 給js端發送信息 
  12.  
  13.     Map<String, Object> zsonResult = new HashMap<String, Object>();// 返回結果,關鍵字段應與Js方協商 
  14.     zsonResult.put("code", SUCCESS); 
  15.     reply.writeString(ZSONObject.toZSONString(zsonResult)); // map 對象轉成json字符串,并返回給js端 
  16.     return true

 java端開啟線程,按照5*3 每15毫秒的頻率返回數據給js端。這里java發送給js的數據,js端會通過訂閱java pa的回調函數中而實時獲取到。

  1. /** 
  2.  *  開啟線程,按照5*3 每15毫秒的頻率返回數據給js端。這里java發送給js的數據, 
  3.  *  js端會通過訂閱java pa的回調函數中而實時獲取到 
  4.  */ 
  5. public void startNotify(RequestParam param) { 
  6.     number = param.getFirstNum(); // 獲取當前進度值從請求中獲取 
  7.     new Thread(() -> { // 開啟線程 
  8.         while (go) { 
  9.             try { 
  10.                 Thread.sleep(5 * 3); // 線程睡眠15毫秒后繼續往下執行 
  11.                 MessageParcel data = MessageParcel.obtain(); // 創建索引為0的空MessageParcel對象 
  12.                 MessageParcel reply = MessageParcel.obtain(); 
  13.                 zsonEvent.put("abilityEvent", number++); 
  14.                 if (number == 101) { // number超過100 go狀態設為false 下載結束 
  15.                     go = false
  16.                 } 
  17.                 data.writeString(ZSONObject.toZSONString(zsonEvent)); // 數據存到MessageParcel載體 
  18.                 remoteObjectHandler.sendRequest(100, data, reply, option); // 發送 
  19.                 reply.reclaim(); // 回收 
  20.                 data.reclaim(); 
  21.             } catch (RemoteException | InterruptedException e) { 
  22.                 break; 
  23.             } 
  24.         } 
  25.     }).start(); 

js頁面點擊取消按鈕,取消訂閱模式, java端停止返回數據。

js端代碼如下:

  1. /** 
  2.  * 請求取消訂閱, java端停止返回數據 
  3.  */ 
  4. unsubscribe: async function() { 
  5.     var action = {}; 
  6.     action.bundleName = 'com.example.javajscommunication'; // Ability的包名稱,需要與PA端匹配,區分大小寫 
  7.     action.abilityName = 'com.example.javajscommunication.ServiceAbility'; // Ability名稱,需要與PA端匹配,區分大小寫 
  8.     action.messageCode = ACTION_MESSAGE_CODE_PLUS_UNSUB; // Ability操作碼(操作碼定義PA的業務功能,需要與PA端約定) 
  9.     action.abilityType = ABILITY_TYPE_EXTERNAL; // Ability類型,對應PA端不同的實現方式 
  10.     action.syncOption = ACTION_SYNC;  // PA側請求消息處理同步/異步選項 0:同步方式,默認方式。 1:異步方式 
  11.  
  12.     var result = await FeatureAbility.unsubscribeAbilityEvent(action); // 取消訂閱 
  13.     var ret = JSON.parse(result); // 反序列化, 
  14.     if (ret.code == 0) { 
  15.         prompt.showToast({ 
  16.             message: '取消下載成功' 
  17.         }) 
  18.     } else { 
  19.         prompt.showToast({ 
  20.             message: '取消下載失敗' 
  21.         }) 
  22.     } 

 java端service代碼如下:

  1. case ACTION_MESSAGE_CODE_PLUS_UNSUB: { 
  2.     go = false; // 停止方法startNotify中的while循環,停止往js端發送消息 
  3.     Map<String, Object> zsonResult = new HashMap<String, Object>(); 
  4.     zsonResult.put("code", SUCCESS); 
  5.     reply.writeString(ZSONObject.toZSONString(zsonResult)); // 響應js端 
  6.     return true

五、調用PA解讀

獲取input輸入的值,作為js端傳遞過去的值。

  1. /**  
  2.   * 取傳過去的第一個值  
  3.   */ 
  4.     numOne (e){ 
  5.         this.numOne = e.value 
  6.     },   
  7.  /**  
  8.   * 獲取傳過去的第二個值 
  9.   */ 
  10.     numTwo (e){ 
  11.         this.numTwo = e.value 
  12.     } 

 點擊求積按鈕 發送調用模式的請求。

  1. calculate: async function() { 
  2.     var actionData = {}; // key值對應PA端的RequestParam類的成員字段 
  3.     actionData.firstNum = this.numOne; 
  4.     actionData.secondNum = this.numTwo; 
  5.  
  6.     var action = {}; 
  7.     action.bundleName = 'com.example.javajscommunication'; // Ability的包名稱,需要與PA端匹配,區分大小寫 
  8.     action.abilityName = 'com.example.javajscommunication.ServiceAbility'; // Ability名稱,需要與PA端匹配,區分大小寫 
  9.     action.messageCode = ACTION_MESSAGE_CODE_PLUS; // Ability操作碼(操作碼定義PA的業務功能,需要與PA端約定) 
  10.     action.data = actionData; // 發送到Ability的數據,數據字段名稱需要與PA端約定 
  11.     action.abilityType = ABILITY_TYPE_EXTERNAL; // Ability類型,對應PA端不同的實現方式 
  12.     action.syncOption = ACTION_SYNC;  // PA側請求消息處理同步/異步選項 0:同步方式,默認方式。 1:異步方式 
  13.  
  14.     var result = await FeatureAbility.callAbility(action); 
  15.     var ret = JSON.parse(result); 
  16.     if (ret.code == 0) { 
  17.         this.message =  'java端傳回的數據為:' + JSON.stringify(ret.abilityResult); 
  18.     } else { 
  19.         this.message =  'java端傳回的數據報錯' + JSON.stringify(ret.code); 
  20.     } 
  21. }, 

java端在ServiceAbility中對訂閱請求進行處理,在內部類MyRemote的onRemoteRequest方法中根據code參數來判斷請求類型進行相應處理。這里java發送給js的數據,js端會通過調用java pa的結果而獲取到。

  1. case ACTION_MESSAGE_CODE_PLUS: { 
  2.     String zsonStr = data.readString(); // 獲取傳入參數的字符串 
  3.     RequestParam param = new RequestParam(); 
  4.     try { 
  5.         param = ZSONObject.stringToClass(zsonStr, RequestParam.class); // 字符串對象轉成RequestParam實例 
  6.     } catch (RuntimeException e) { 
  7.  
  8.     } 
  9.  
  10.     // 返回結果僅支持可序列化的Object類型 
  11.     Map<String, Object> zsonResult = new HashMap<>(); 
  12.     zsonResult.put("code", SUCCESS); 
  13.     zsonResult.put("abilityResult", param.getFirstNum() + " * " + param.getSecondNum() + " = " + (param.getFirstNum() * param.getSecondNum())); 
  14.     reply.writeString(ZSONObject.toZSONString(zsonResult)); // 數據返回給js端 
  15.     return true

 返回到前一個頁面,這里在頁面js中import router from ‘@system.router’,然后利用router對象的相關方法返回。

  1. back(){ 
  2.     router.back() // 返回到前一個頁面 

六、代碼參考

https://gitee.com/chinasoft6_ohos/java-js-communication

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-10-27 10:05:55

鴻蒙HarmonyOS應用

2022-03-07 14:58:10

ArkUIJS FAJava

2021-12-20 10:07:39

鴻蒙HarmonyOS應用

2022-06-02 14:27:05

UI框架JS

2021-07-16 09:54:49

鴻蒙HarmonyOS應用

2022-02-24 16:00:59

Ability鴻蒙JS

2021-11-15 15:11:14

鴻蒙HarmonyOS應用

2022-02-17 21:28:08

AbilityJSFA鴻蒙

2022-02-17 21:19:35

JSFA操作系統鴻蒙

2022-05-20 10:56:54

AbilityeTS FA調用

2022-09-08 15:18:51

Ability鴻蒙

2015-03-26 13:14:53

javascriptjs callback實現調用

2021-03-02 09:29:29

鴻蒙HarmonyOS應用開發

2022-05-24 15:06:57

AbilityeTS FA鴻蒙

2017-05-02 22:38:44

前端開發JS事件循環機制

2022-02-17 21:05:26

AbilityJS FAJava PA

2015-11-20 11:20:54

js開發

2021-06-24 14:41:16

鴻蒙HarmonyOS應用

2021-05-07 09:35:30

鴻蒙HarmonyOS應用

2022-06-16 14:41:50

APP應用鴻蒙
點贊
收藏

51CTO技術棧公眾號

91九色最新地址| 成人小视频免费在线观看| 亚洲欧洲国产伦综合| 免费观看成人在线视频| 免费人成在线观看播放视频| 国产成人在线观看免费网站| 91爱视频在线| 天堂а√在线中文在线鲁大师| 欧美三级一区| 日本道精品一区二区三区| 宅男在线精品国产免费观看| 日韩一区二区三区不卡| 日本女人一区二区三区| 欧美精品第一页在线播放| 熟女少妇内射日韩亚洲| 91成人福利| 欧美日韩亚洲综合| 日韩av一二三四区| 2024最新电影免费在线观看 | 国产区亚洲区欧美区| 国产亚洲精品久久777777| 欧美日韩国产在线观看网站| 欧美tickling挠脚心丨vk| 青青青在线视频免费观看| 99在线视频影院| 亚洲欧洲日韩av| 日本一区二区三不卡| 欧美一级特黄aaaaaa大片在线观看| 蜜臀久久久久久久| 97在线看免费观看视频在线观看| av最新在线观看| 精品高清久久| 日韩风俗一区 二区| 潘金莲一级淫片aaaaaaa| 欧美a一级片| 欧洲一区在线观看| 乱妇乱女熟妇熟女网站| 精品精品导航| 一区二区三区四区视频精品免费| 亚洲国产日韩欧美| 黄色片视频在线观看| 91色.com| 精品国产乱码一区二区三区四区| 精品人妻午夜一区二区三区四区| 久久国内精品视频| 国产精品视频网站| 中文字幕乱码一区二区| 日韩高清欧美激情| 国产精品99久久久久久白浆小说| 五月天综合激情网| 国产毛片一区| 日产精品99久久久久久| 影音先锋在线国产| 美女尤物久久精品| 国产精品av电影| 看黄色一级大片| 日韩电影免费一区| 91精品久久久久久久久久| 在线观看黄色国产| 久久国产麻豆精品| 成人两性免费视频| 午夜精品久久久久久久99热黄桃 | 大黄网站在线观看| 亚洲va国产天堂va久久en| 欧美在线一区视频| 男女羞羞在线观看| 91久久精品一区二区二区| 亚洲综合在线网站| 亚洲精品777| 在线播放中文字幕一区| 婷婷激情综合五月天| 日韩欧洲国产| 欧美精品一区二区三区很污很色的 | 激情五月激情综合网| 92裸体在线视频网站| 亚洲第一第二区| 91婷婷韩国欧美一区二区| 欧美男人的天堂| 日本最新在线视频| 亚洲午夜影视影院在线观看| 国产男女免费视频| 亚洲一区站长工具| 欧美日本乱大交xxxxx| caopor在线| 少妇精品久久久一区二区| 中文字幕免费精品一区| 无码人妻精品一区二区三区夜夜嗨| 好吊一区二区三区| 国产v综合ⅴ日韩v欧美大片| 国产精品久久久国产盗摄| 国产91精品久久久久久久网曝门| 欧美精品二区三区四区免费看视频 | 日本成人中文| 日韩中文字在线| 日本少妇裸体做爰| 蜜臀久久久久久久| 国产一级特黄a大片99| h视频网站在线观看| 一区二区三区四区在线| 国产av人人夜夜澡人人爽| 蜜桃精品一区二区三区| 精品无人区乱码1区2区3区在线| 91精品久久久久久久久久久久| 欧美日韩视频| 国产精品视频不卡| 欧美 日韩 国产 成人 在线 91| 国产欧美日韩综合| 婷婷在线播放| 亚洲免费观看高清完整版在线观看| 激情五月六月婷婷| 国产麻豆视频一区| 国产成人精品日本亚洲11| 嫩草在线播放| 一区二区高清免费观看影视大全 | 97在线观看免费高清| 成人毛片一区二区三区| 国产成人精品免费看| 亚洲高清不卡一区| 日韩精品av| 精品盗摄一区二区三区| 免费成人美女女在线观看| 亚洲一区二区伦理| 国产精品免费区二区三区观看| 成人免费在线电影| 午夜激情一区二区三区| 国产精品嫩草影院8vv8| 国产精品嫩模av在线| 午夜精品在线观看| 91国内精品视频| 国产日韩欧美一区二区三区乱码| 国产精品一线二线三线| 日日夜夜一区| 在线日韩日本国产亚洲| 天天干天天干天天操| 国产.欧美.日韩| www.69av| 一区二区三区亚洲变态调教大结局 | 免费黄网站在线| 亚洲一二三四区不卡| 三日本三级少妇三级99| aa片在线观看视频在线播放| 成人区精品一区二区不卡| 欧美撒尿777hd撒尿| 亚洲av毛片基地| 肉肉av福利一精品导航| 久久久久久高清| 日韩精品av| 亚洲欧美日韩一区二区三区在线| 国产精品美女久久久久av爽| 成人精品在线视频观看| 日韩一级性生活片| 另类ts人妖一区二区三区| 性色av一区二区咪爱| 好吊色在线观看| 亚洲第一福利一区| 99久久人妻精品免费二区| av成人激情| 久久免费一区| 性高爱久久久久久久久| 中文日韩电影网站| 97超碰国产在线| 伊人色综合久久天天人手人婷| 在线视频日韩欧美| 欧美激情五月| 久久伦理网站| 九九九精品视频| 欧美猛交ⅹxxx乱大交视频| 性猛交xxxx乱大交孕妇印度| 亚洲一级不卡视频| 18禁裸乳无遮挡啪啪无码免费| 久久综合亚州| 伊人久久av导航| 日本久久伊人| 136fldh精品导航福利| 成人h小游戏| 欧美一区二区性放荡片| 久久精品国产av一区二区三区| av一二三不卡影片| 国产精品区在线| 欧美日韩专区| 日产精品高清视频免费| 亚洲青青久久| 性色av一区二区三区免费| 国产免费视频在线| 日韩欧美一区二区在线视频| 毛片视频网站在线观看| 国产精品久久久久一区二区三区| 韩国三级丰满少妇高潮| 中文高清一区| 免费在线观看污污视频| 加勒比久久高清| 国产精品美女主播| 国产极品人妖在线观看| 国产一区二区三区18| 午夜精品久久久久久久96蜜桃| 色天天综合久久久久综合片| 亚洲xxxx3d动漫| 国产日韩精品一区二区三区| 苍井空张开腿实干12次| 日本亚洲三级在线| 精品少妇在线视频| 国产精品传媒精东影业在线| 久久影院理伦片| 精品国产亚洲一区二区三区在线| 欧美在线观看一区二区三区| 午夜在线小视频| 日韩精品中文字幕久久臀| 99在线小视频| 欧美四级电影网| 免费日韩一级片| 亚洲精品亚洲人成人网在线播放| 3d动漫精品啪啪一区二区下载| 国产高清精品网站| 精品亚洲一区二区三区四区| 一区二区三区成人精品| 久久精品在线免费视频| 日韩精品一区二区三区免费观影| 精品无码久久久久久久动漫| 国产一区二区三区国产精品| 国产精品第七影院| 中老年在线免费视频| 精品中文字幕在线观看| 日本在线观看免费| 亚洲区在线播放| 日韩在线无毛| 欧美精品一区二区三区蜜臀| 99热这里只有精品1| 欧美日韩国产乱码电影| 国产一级精品毛片| 日韩人体视频一二区| 日韩精品视频播放| 亚洲国产另类av| 国产亚洲精品久久久久久打不开| 亚洲女同女同女同女同女同69| 成人在线观看免费高清| 国产欧美一区二区三区鸳鸯浴| 国产精品三级在线观看无码| 91小视频免费看| 精品国产av色一区二区深夜久久| 不卡av免费在线观看| 美女露出粉嫩尿囗让男人桶| 国产精品一区二区三区乱码| 中文字幕一区二区在线观看视频| 老司机免费视频一区二区| 自拍偷拍21p| 久久91精品久久久久久秒播| 少妇一级淫免费放| 奇米色一区二区三区四区| 韩国中文字幕av| 麻豆精品在线观看| 在线观看日本www| 国产成人av一区| 完美搭档在线观看| 91亚洲国产成人精品一区二区三 | 日韩高清在线免费观看| 久久av二区| 精品毛片免费观看| 亚洲国内在线| 五月婷婷六月综合| 男人添女荫道口喷水视频| 黄色成人在线网址| 国产91在线免费| 日本美女一区二区| 久久出品必属精品| 成人av在线看| 91成年人网站| 成人免费小视频| 精品少妇一二三区| 色婷婷av一区二区三区大白胸| 在线免费观看高清视频| 91精品国产欧美日韩| 蜜臀久久精品久久久久| 亚洲精品在线不卡| 一广人看www在线观看免费视频| 美女福利精品视频| 免费在线小视频| 成人福利网站在线观看| 99ri日韩精品视频| 日本一区免费看| 91高清一区| 中文字幕无码精品亚洲35| 日韩中文欧美在线| 激情成人在线观看| 久久美女高清视频| 91杏吧porn蝌蚪| 欧美日韩在线影院| 国产一区二区小视频| 亚洲国产日韩欧美在线图片 | 狼人天天伊人久久| 亚洲一区二区三区乱码| 在线看片欧美| 日本黄大片一区二区三区| 成人aaaa免费全部观看| 青青草自拍偷拍| 无码av中文一区二区三区桃花岛| 中文字幕一区二区三区波野结| 欧美精品一区二区三| 1024国产在线| 26uuu久久噜噜噜噜| 国产专区精品| 先锋影音网一区| 国产农村妇女精品一二区| 亚洲一区二区三区四区精品| 久久人人97超碰com| 九九视频免费看| 欧美唯美清纯偷拍| 色视频免费在线观看| 欧美成人剧情片在线观看| 最新欧美电影| 久久这里精品国产99丫e6| 欧美特黄一区| av噜噜在线观看| 欧美激情在线免费观看| 91午夜视频在线观看| 精品国免费一区二区三区| 18免费在线视频| 国产成人精品视频在线| 久久国产精品免费精品3p| 丰满女人性猛交| 看国产成人h片视频| 中文字幕av网址| 精品国产乱码久久久久久婷婷| 99热这里只有精品66| 日韩在线观看免费全| 超薄肉色丝袜脚交一区二区| 九九九九九九精品| 亚洲伦理一区| 制服丝袜av在线| 一区二区成人在线视频| 精品国产乱码一区二区三 | 四虎884aa成人精品| 欧美日韩三级一区| 国产视频第一区| 日本久久精品视频| 婷婷综合电影| 啊啊啊一区二区| 99国产精品视频免费观看| 妺妺窝人体色www在线下载| 日韩欧美激情四射| 亚洲色图美国十次| 97久久人人超碰caoprom欧美| 亚洲成人精品| 91大神免费观看| 亚洲美女免费视频| 精品人妻少妇嫩草av无码专区| 久久不射电影网| 91午夜精品| 精品少妇一区二区三区在线| av资源站一区| 国产又黄又猛又粗又爽| 亚洲视频电影图片偷拍一区| 精品成人av| 亚洲一区二区三区加勒比| 精品中文字幕一区二区小辣椒| 激情五月激情综合| 欧美一区二区三区影视| 激情图片在线观看高清国产| 国产精品制服诱惑| 国产精品永久| youjizz亚洲女人| 69久久99精品久久久久婷婷| www.在线视频| 国产精品日韩一区二区三区| 亚洲影视在线| 日韩欧美在线视频播放| 欧美一区二区三区四区在线观看| 污污视频在线看| 免费在线一区二区| 久久精品久久99精品久久| 欧美日韩午夜视频| 日韩av在线免费观看| 日韩欧美一区二区三区在线观看| 一区二区三区在线视频看| 国产高清不卡一区| 国产特黄大片aaaa毛片| 亚洲天堂第一页| 国产高清亚洲| 成人一对一视频| 国产精品激情偷乱一区二区∴| 国产99久一区二区三区a片| 亚洲18私人小影院| 欧美呦呦网站| 涩视频在线观看| 精品视频在线免费看| 丁香花在线电影| 天堂av一区二区| 成人av资源在线观看| 无码人妻av一区二区三区波多野| 久久亚洲春色中文字幕| 久9re热视频这里只有精品| 日韩一级免费片| 亚洲不卡av一区二区三区| 成年人视频在线看| 国产色综合一区二区三区| 蜜桃av噜噜一区| 九九热精品视频在线| 超碰91人人草人人干| 99国产视频在线| 卡一卡二国产精品 | 精品在线一区二区三区|