精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美精品在欧美一区二区少妇| 国产婷婷色一区二区三区| 欧美黑人极品猛少妇色xxxxx| 95视频在线观看| 成人性生交大片免费观看网站| 欧美激情综合在线| 国产激情一区二区三区在线观看| 伦av综合一区| 91精品一区二区三区综合在线爱| 亚洲第一精品福利| 国产精品igao| 欧美黑人猛交的在线视频| 久久免费的精品国产v∧| 成人在线精品视频| 日本中文字幕第一页| 在线观看日韩| 亚洲偷欧美偷国内偷| 91精品啪在线观看国产| 日韩一级特黄| 色天天综合色天天久久| 免费网站永久免费观看| se在线电影| 99精品欧美一区二区三区综合在线| 国产日韩欧美黄色| 天干夜夜爽爽日日日日| 亚洲黄色视屏| 欧美精品一区三区| 免费一级suv好看的国产网站| 欧美美女黄色| 精品欧美一区二区三区精品久久 | 影院在线观看全集免费观看| 久久久精品中文字幕麻豆发布| 国产精品入口免费| 国产激情视频在线播放 | 婷婷中文字幕综合| 国产精品12p| avtt在线播放| 国产日韩欧美在线一区| 老牛影视免费一区二区| 日本黄色免费视频| 国产成人手机视频| 一区二区三区电影大全| 黄色成人av网| 久久视频这里有精品| 欧美xxxbbb| 夜夜揉揉日日人人青青一国产精品| 国产免费一区二区三区四在线播放| 搞黄视频免费在线观看| 国产午夜精品久久久久久久 | 深爱五月综合网| 六九午夜精品视频| 欧美亚洲国产怡红院影院| 成年人观看网站| 成人欧美magnet| 一本到一区二区三区| 欧美v在线观看| 伊人久久综合一区二区| 日韩欧美一区二区三区| 欧美牲交a欧美牲交aⅴ免费下载| 免费看男女www网站入口在线| 天天影视色香欲综合网老头| 免费av手机在线观看| 麻豆网站免费在线观看| 高潮白浆女日韩av免费看| 黄色一级片播放| 亚洲精品中文字幕| 色999日韩国产欧美一区二区| 熟妇人妻va精品中文字幕| 亚洲电影有码| 欧美三级中文字幕在线观看| 男生操女生视频在线观看| 四虎影视国产精品| 日韩精品一区二区三区在线播放 | 久久九九热re6这里有精品| 亚洲成色777777女色窝| 少妇按摩一区二区三区| 日韩片欧美片| 欧美丰满少妇xxxxx| 日韩精品视频免费播放| 天堂成人国产精品一区| 国产精品亚洲аv天堂网| 国产情侣激情自拍| av一二三不卡影片| 亚洲v欧美v另类v综合v日韩v| 超碰caoporn久久| 亚洲成a人v欧美综合天堂下载| 成年人视频在线免费| 日本a人精品| 日韩欧美激情一区| 国产伦精品一区二区三区妓女| 欧美一二区在线观看| 久久影院资源网| 天天爽夜夜爽夜夜爽精品| 蜜臀久久久99精品久久久久久| 亚洲a中文字幕| 欧美日韩伦理片| 亚洲黄色片在线观看| 丁香啪啪综合成人亚洲| 国产视频一区二| 亚洲丝袜在线视频| 久久99久久久| 蜜臀国产一区二区三区在线播放| 国产经典一区二区三区| 日本在线免费播放| 欧美性xxxxx极品| 欧美熟妇另类久久久久久多毛| 四虎5151久久欧美毛片| 欧美成人激情视频| 香蕉污视频在线观看| 成人毛片视频在线观看| 永久久久久久| 性欧美hd调教| 日韩av资源在线播放| 美女福利视频在线观看| 首页综合国产亚洲丝袜| 国产一级特黄a大片99| 黄页视频在线播放| 欧美在线视频不卡| 在线免费看黄色片| 女人色偷偷aa久久天堂| 国产精品自拍偷拍视频| 欧洲亚洲精品视频| 亚洲电影一区二区| 人妻精油按摩bd高清中文字幕| 日韩一区电影| 国产精品黄视频| 午夜小视频免费| 亚洲高清视频在线| 成人三级做爰av| 99久久www免费| 国产精品亚洲美女av网站| 爽爽视频在线观看| 五月天亚洲婷婷| 亚洲婷婷在线观看| 欧美视频日韩| 国产高清自拍99| 女子免费在线观看视频www| 欧美疯狂做受xxxx富婆| 蜜桃av免费观看| 日韩不卡在线观看日韩不卡视频| 久久久久高清| 日日av拍夜夜添久久免费| 日韩激情av在线免费观看| www.国产成人| 99久久精品免费| 免费成人午夜视频| 天天躁日日躁狠狠躁欧美巨大小说| 久久欧美在线电影| 欧美一区二区三区激情| 亚洲第一搞黄网站| 艳妇乳肉豪妇荡乳xxx| 亚洲午夜91| 国产一区二区不卡视频| 免费在线小视频| 亚洲国产天堂网精品网站| 日本一区二区欧美| av影院午夜一区| 国产精品亚洲二区在线观看| 久久av免费看| 成人激情视频小说免费下载| av在线下载| 精品欧美乱码久久久久久1区2区| 中文字幕一区二区三区手机版| av成人免费在线观看| 亚洲自偷自拍熟女另类| 国产一区二区精品福利地址| 国产精品网红直播| 国产婷婷视频在线| 日韩精品一区二| 国产成人综合欧美精品久久| 久久久精品tv| 污污视频在线免费| 日韩午夜免费| 亚洲精品二区| 亚洲图色一区二区三区| 91成人天堂久久成人| 成人在线免费公开观看视频| 69精品人人人人| 日韩精品一区二区在线播放| 久久久99精品免费观看| 日本国产一级片| 亚洲国产国产亚洲一二三| 欧美aaaaa喷水| aa亚洲一区一区三区| 久久久免费av| 99视频在线观看地址| 日韩欧美二区三区| 日韩手机在线视频| 亚洲精品一二三区| 国产色视频一区二区三区qq号| 久久成人18免费观看| 日本在线xxx| 欧美高清在线| 成人免费观看网站| jizz亚洲女人高潮大叫| 久久全球大尺度高清视频| 成人福利在线| 亚洲а∨天堂久久精品9966| 亚洲网站免费观看| 精品av在线播放| 欧美做爰啪啪xxxⅹ性| 99re视频精品| 久久久久无码精品| 日本午夜精品一区二区三区电影| 18黄暴禁片在线观看| 青草国产精品| 久久久久久久久久久一区| 国产999精品在线观看| 日本久久久久久久久| 日韩av官网| 日韩一区二区三区国产| 日本福利片高清在线观看| 日韩一区二区精品在线观看| 91丨九色丨海角社区| 欧美日韩精品中文字幕| 九九视频免费观看| 国产精品情趣视频| 草草地址线路①屁屁影院成人| 国产精品一区二区久久不卡| 日韩肉感妇bbwbbwbbw| 在线亚洲激情| 91免费黄视频| 韩国在线一区| 成人污网站在线观看| 偷拍欧美精品| 一区二区高清视频| 国内精品视频在线观看 | 牛牛澡牛牛爽一区二区| 亚洲电影第1页| 朝桐光av在线一区二区三区| 欧美久久久久久久久中文字幕| www.日韩一区| 在线一区二区三区四区五区| 一级黄色免费网站| 欧美日韩国产在线| 少妇一级淫片免费放中国| 亚洲影视在线播放| 精品午夜福利在线观看| 亚洲一区二三区| 美女视频黄免费| 亚洲一区二区三区四区五区黄 | www.日本高清| 成人精品国产福利| 美女搡bbb又爽又猛又黄www| 国产成人av电影在线| 台湾佬美性中文| 国产98色在线|日韩| 亚洲精品久久一区二区三区777| 国产盗摄精品一区二区三区在线| 亚洲一级片免费观看| 国产精品一区二区不卡| 四虎国产精品免费| 国产99久久久国产精品免费看| 国产男女无遮挡猛进猛出| 国产精品一区二区久久不卡 | 天海翼亚洲一区二区三区| 久久精品日产第一区二区三区乱码 | 成人a在线视频免费观看| 久久精品青青大伊人av| а√中文在线8| 欧美黄色免费网站| av日韩国产| 91大神福利视频在线| 丝袜美腿诱惑一区二区三区| 国产美女久久精品| 久久伊人影院| 九九九九九精品| 清纯唯美亚洲综合一区| 精品少妇人妻av一区二区| 国产一区久久| 成年人视频在线免费| 麻豆freexxxx性91精品| 国产成人av免费观看| 成人免费黄色大片| 美女100%无挡| 亚洲欧洲综合另类在线| 国产91av视频| 欧美性猛交xxxx乱大交退制版 | 成人午夜精品| 亚洲最大av在线| 免费精品国产| 91麻豆天美传媒在线| 亚洲三级影院| 亚洲精品午夜在线观看| 丰满放荡岳乱妇91ww| 日韩中文字幕电影| 亚洲人妖av一区二区| 久久国产精品免费看| 9191成人精品久久| 香港三日本三级少妇66| 精品国产区一区二区三区在线观看| 免费男女羞羞的视频网站在线观看| 奇米成人av国产一区二区三区| 婷婷久久免费视频| 欧美精品人人做人人爱视频| 欧美国产免费| 亚洲污视频在线观看| bt欧美亚洲午夜电影天堂| 四虎影视一区二区| 欧美日韩一区二区免费视频| 99热这里只有精品在线观看| 亚洲欧美在线x视频| 蜜臀av在线| 国产精品美女久久久免费| 精品伊人久久久| 资源网第一页久久久| 日本在线播放一区二区三区| 91九色蝌蚪porny| 日韩理论片在线| 天堂av免费在线观看| 国产丝袜高跟一区| 污视频网站在线免费| 国产一区二区在线免费| 国产一区二区三区探花| 农民人伦一区二区三区| 国内国产精品久久| 色噜噜噜噜噜噜| 色诱亚洲精品久久久久久| 黄色一级大片在线免费看国产一 | 久久亚洲国产精品尤物| 蜜桃导航-精品导航| 亚洲午夜91| 日批视频免费看| 一区二区三区四区在线免费观看 | 国内精品免费**视频| аⅴ天堂中文在线网| 色av一区二区| 久久久久久久久亚洲精品| 97精品国产91久久久久久| 日韩在线成人| 黄色一级片av| 国产乱人伦精品一区二区在线观看 | 国产农村老头老太视频| 综合国产在线视频| 99热播精品免费| 亚洲春色在线视频| 日本成人在线不卡视频| 国产123在线| 欧美色老头old∨ideo| 成人精品一区| 国产精品久久久久久搜索| 欧美精选一区二区三区| 丝袜制服一区二区三区| 国产欧美va欧美不卡在线| 国产在线观看第一页| 一区二区三区视频免费| 精品美女一区| 中文字幕精品—区二区日日骚| 精品一区二区三区在线播放视频| 亚洲色图27p| 欧美一卡二卡三卡| 丝袜国产在线| 国语精品免费视频| 亚洲免费网址| 国产精品免费无码| 欧美日韩aaa| 超碰最新在线| 国产伦精品一区二区三区四区视频 | 成人资源在线播放| 国产二级片在线观看| 2021久久国产精品不只是精品| 亚洲欧美偷拍一区| 中文字幕久久久av一区| 中文字幕成人| 无码粉嫩虎白一线天在线观看| 91美女片黄在线观看91美女| 国产成人a v| 美女性感视频久久久| 国产精品xxx在线观看| 精品国产成人av在线免| 国产精品三级久久久久三级| www日本在线| 欧美亚洲国产视频小说| 色欧美自拍视频| 国模无码视频一区| 欧美视频一二三区| 天堂av在线电影| 欧美一区二区在线视频观看| 免费高清在线一区| 国产亚洲精品久久久久久无几年桃| 亚洲精品一区在线观看香蕉| 中文字幕综合| 人妻熟女一二三区夜夜爱| 亚洲欧洲精品一区二区三区| 欧美 日韩 国产 在线| 国产精品美女在线观看| 欧美成人tv| 黄免费在线观看| 精品美女一区二区三区| 韩国成人在线| 久久精品xxx| 亚洲欧洲成人自拍| 午夜影院免费视频| 91在线短视频| 日韩不卡一二三区| www.av麻豆| 欧美成人精品一区二区三区| 精品国产成人| 91玉足脚交白嫩脚丫| 欧美一区二区三区在线电影|