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

在鴻蒙系統上實現權限請求框架—桃夭權限請求框架

開發 前端
桃夭是鴻蒙系統上的一款權限請求框架,對請求權限的代碼進行高度封裝,極大的簡化了申請權限的代碼邏輯,同時支持在Ability、FractionAbility、AbilitySlice、Fractiion里面申請權限。

[[433362]]

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

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

https://harmonyos.51cto.com

本文正在參與優質創作者激勵

一、簡介

桃夭是鴻蒙系統上的一款權限請求框架,對請求權限的代碼進行高度封裝,極大的簡化了申請權限的代碼邏輯,同時支持在Ability、FractionAbility、AbilitySlice、Fractiion里面申請權限。

二、源碼

源碼

建議大家把源碼下載下來看看。

三、申請權限的一般步驟

  • 判斷是否有權限,如果有權限,直接進行下一步。
  • 如果沒有權限,可以彈窗告知用戶申請權限的原因。
  • 彈窗告知用戶后,如果用戶同意申請權限,則判斷用戶是否點擊了不再提醒。
  • 如果用戶沒有點擊不再提醒,則開始申請權限。
  • 如果用戶點擊了不再提醒,則彈窗告知用戶去設置頁面開啟權限,用戶點擊彈窗后,跳轉到設置頁面。
  • 重寫onRequestPermissionsFromUserResult方法,判斷用戶是否授予權限。

每次申請權限的時候,都需要經過以上幾個步驟,當申請的權限越來越多,大量的重復代碼就出現了。為了減少重復代碼,我封裝了一個權限請求框架,權限請求框架取名為桃夭。

四、桃夭的使用方式

如下代碼,先添加依賴,然后你只需要告知權限請求框架你需要什么權限,權限請求框架就會告知你權限申請成功還是失敗。你不需要手動判斷是否有權限,不需要彈窗告知用戶申請權限的原因,不需要判斷用戶是否點擊了不再提醒,不需要跳轉設置頁面讓用戶開啟權限,不需要重寫onRequestPermissionsFromUserResult方法。框架把這些代碼邏輯都給做了,你只需要關注權限申請成功還是失敗。

申請權限變得如此之簡單。

添加依賴

  1. api 'io.gitee.zhongte:taoyao:1.0.1' 

 申請權限

  1. // 申請多設備協同權限 
  2. EasyPermission.requestPermission(this, EasyPermission.DISTRIBUTED_DATASYNC, new PermissionAction() { 
  3.             @Override 
  4.             public void onGranted(List<String> permissions) { 
  5.                 // 權限申請成功 
  6.                  
  7.             } 
  8.  
  9.             @Override 
  10.             public void onDenied(List<String> permissions) { 
  11.                 // 權限申請失敗 
  12.             } 
  13.         }, SystemPermission.DISTRIBUTED_DATASYNC); 

 申請權限的時候可能會涉及到兩個彈窗,一個彈窗是用來告知用戶申請權限的原因,另一個彈窗是用來告知用戶去設置頁面開啟權限,這兩個彈窗在不同的應用里面可能長得不一樣,所以這兩個彈窗并沒有被封裝到桃夭框架里面,而是需要使用者根據你的彈窗樣式對桃夭進行二次封裝,我在源碼里面對桃夭框架進行了二次封裝,大家可以把源碼下載下來,參考下我是如何對桃夭框架進行二次封裝的。二次封裝完成后,就可以愉快的使用上面的代碼申請權限了。

五、實現原理

5、1 檢測申請的權限是否在配置文件中聲明

申請的權限必須在配置文件中聲明,否則桃夭會直接拋異常。如何檢測申請的權限是否在配置文件中聲明。

如下代碼,獲取bundleManager對象,通過bundleManager對象獲取應用信息,之后就可以獲取應用在配置文件中聲明的權限了。

  1. /** 
  2.  * 獲取在配置文件中聲明的權限 
  3.  * 
  4.  * @param context 上下文 
  5.  * @return 在配置文件中聲明的權限 
  6.  */ 
  7. private List<String> getConfigPermissions(Context context) { 
  8.     // 獲取bundleManager對象 
  9.     IBundleManager bundleManager = context.getBundleManager(); 
  10.     String bundleName = context.getBundleName(); 
  11.     try { 
  12.         // 獲取應用信息 
  13.         BundleInfo bundleInfo = bundleManager.getBundleInfo(bundleName, IBundleManager.GET_BUNDLE_WITH_REQUESTED_PERMISSION); 
  14.         // 獲取應用在配置文件中聲明的權限 
  15.         List<String> reqPermissionDetails = bundleInfo.reqPermissions; 
  16.         if (reqPermissionDetails == null || reqPermissionDetails.isEmpty()) { 
  17.             throw new IllegalStateException("請在配置文件中聲明要申請的權限"); 
  18.         } 
  19.         return reqPermissionDetails; 
  20.     } catch (RemoteException e) { 
  21.         e.printStackTrace(); 
  22.     } 
  23.     return new ArrayList<>(); 

獲取到在配置文件中聲明的權限后,就可以判斷申請的權限是否在配置文件中了

  1. /** 
  2.      * 檢查申請的權限是否在配置文件中聲明 
  3.      * 
  4.      * @param permissions 要申請的權限 
  5.      */ 
  6.     private void checkPermissions(String... permissions) { 
  7.         if (permissions == null || permissions.length == 0) { 
  8.             throw new IllegalArgumentException("請至少申請一個權限"); 
  9.         } 
  10.         // 獲取在配置文件中聲明的權限 
  11.         mReqPermissions = getConfigPermissions(mOrigin.getContext()); 
  12.         if (mReqPermissions.isEmpty()) { 
  13.             throw new IllegalStateException("請在配置文件中聲明要申請的權限"); 
  14.         } 
  15.         for (String target : permissions) { 
  16.             if (!mReqPermissions.contains(target)) { 
  17.                 // 沒有在配置中聲明要申請的權限,直接拋異常 
  18.                 throw new IllegalStateException(String.format("%1$s權限沒有配置文件中聲明", target)); 
  19.             } 
  20.         } 
  21.     } 

5、2 判斷是否有權限

檢測完權限是否在配置中聲明后,就可以判斷是否有權限了。這里就是通過上下文對象的verifySelfPermission方法來判斷是否有權限,如果沒有權限,可以彈窗告知用戶申請的原因。

  1. /** 
  2.     * 是否有權限 
  3.     *  
  4.     * @param context 
  5.     * @param permissions 
  6.     * @return 
  7.     */ 
  8.    @Override 
  9.    public boolean hasPermission(Context context, List<String> permissions) { 
  10.        for (String permission : permissions) { 
  11.            int result = context.verifySelfPermission(permission); 
  12.            if (result == IBundleManager.PERMISSION_DENIED) { 
  13.                // 沒有權限 
  14.                return false
  15.            } 
  16.        } 
  17.        return true
  18.    } 

5、3 判斷用戶是否點擊了不再提醒

通過上下文對象的canRequestPermission方法來判斷用戶是否點擊了不再提醒。

  1. /** 
  2.    * 用戶是否點擊了不在提醒 
  3.    * 
  4.    * @param permission 權限 
  5.    * @return 
  6.    */ 
  7.   @Override 
  8.   public boolean canRequestPermission(String permission) { 
  9.       return mContext.canRequestPermission(permission); 
  10.   } 

5、4 跳轉到設置頁面

如果用戶點擊了不再提醒,則可以跳轉到設置頁面讓用戶開啟權限

  1. /** 
  2.      * 跳轉到設置頁面 
  3.      */ 
  4.     @Override 
  5.     public void gotoSetting() { 
  6.         try { 
  7.             Intent intent = new Intent(); 
  8.             intent.setAction(IntentConstants.ACTION_APPLICATION_DETAILS_SETTINGS); 
  9.             intent.setUri(Uri.parse("package:" + mOrigin.getContext().getBundleName())); 
  10.             mOrigin.startAbility(intent); 
  11.         } catch (Exception e) { 
  12.             e.printStackTrace(); 
  13.         } 
  14.     } 

5、5 啟動透明的Ability申請權限

如果沒有權限,用戶頁面沒有點擊不再提醒,那就可以申請權限了。為了不讓調用者重寫onRequestPermissionsFromUserResult方法,桃夭內部啟動了一個Ability。如下代碼。

  1. /** 
  2.  * 開啟一個透明的Ability來申請權限,這樣外界就不需要重寫onRequestPermissionsFromUserResult方法 
  3.  */ 
  4. public class PermissionAbility extends Ability { 
  5.  
  6.     private static final int REQUEST_CODE = 0X10; 
  7.     public static final String KEY_PERMISSION = "key_permission"
  8.     public static final String KEY_TYPE = "key_type"
  9.     public static final String SENSITIVE_PERMISSION = "sensitive_permission"
  10.  
  11.     @Override 
  12.     public void onStart(Intent intent) { 
  13.         super.onStart(intent); 
  14.         getWindow().setTransparent(true); 
  15.         super.setUIContent(ResourceTable.Layout_ability_permission); 
  16.         List<String> permissions = intent.getSerializableParam(KEY_PERMISSION); 
  17.         String permissionType = intent.getStringParam(KEY_TYPE); 
  18.         // 請求權限 
  19.         requestPermissionsFromUser(permissions.toArray(new String[0]), REQUEST_CODE); 
  20.     } 
  21.  
  22.     @Override 
  23.     public void onRequestPermissionsFromUserResult(int requestCode, String[] permissions, int[] grantResults) { 
  24.         super.onRequestPermissionsFromUserResult(requestCode, permissions, grantResults); 
  25.         // 權限的回調方法 
  26.         Postman.send(permissions, grantResults); 
  27.         terminateAbility(); 
  28.     } 
  29.  
  30.     @Override 
  31.     protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) { 
  32.         super.onAbilityResult(requestCode, resultCode, resultData); 
  33.     } 

直接啟動一個Ability會發生頁面跳轉,為了不讓頁面發生跳轉,這里啟動了一個透明的Ability。如何將Ability設置透明,如下代碼。在abilities節點添加metaData,這里最關鍵的是Translucent,也就是透明。

  1. "abilities": [ 
  2.       { 
  3.         "orientation""unspecified"
  4.         "name""com.poetry.taoyao.ability.PermissionAbility"
  5.         "icon""$media:icon"
  6.         "description""$string:permissionability_description"
  7.         "label""$string:taoyao_PermissionAbility"
  8.         "type""page"
  9.         "launchType""standard"
  10.         "metaData": { 
  11.           "customizeData": [ 
  12.             { 
  13.               "name""hwc-theme"
  14.               "value""androidhwext:style/Theme.Emui.Translucent.NoTitleBar" 
  15.             } 
  16.           ] 
  17.         } 
  18.       } 

僅僅有上面的步驟好不夠,需要在Ability或者AbilitySlice里面將窗口設置成透明。如下代碼。

  1. getWindow().setTransparent(true); 

 經過上面兩步,也就是將Ability的主題和窗口都設置成透明,這樣就能將Ability變成透明的了,同時也不會發生頁面跳轉。

5、6 判斷用戶是否授予權限

判斷用戶是否授予權限,可以使用標準的方式來判斷。也就是通過grantResult來判斷用戶是否授予權限。

  1. @Override 
  2.  public boolean hasPermission(int[] grantResults, String... permissions) { 
  3.      if (grantResults == null || grantResults.length <= 0) { 
  4.          return false
  5.      } 
  6.      for (int grantResult : grantResults) { 
  7.          if (grantResult == IBundleManager.PERMISSION_DENIED) { 
  8.              return false
  9.          } 
  10.      } 
  11.      return true
  12.  } 

其實還有另外的方式來判斷用戶是否授予權限。也就是不管用戶是否授權,直接訪問相關業務。比如,申請錄音權限,當系統回調onRequestPermissionsFromUserResult方法時,直接去錄音,如果發生異常,捕獲異常說明沒有權限。如下代碼:

  1. /** 
  2.     * 通過直接錄音的方式來判斷是否有錄音權限 
  3.     *  
  4.     * @param context 
  5.     * @return 
  6.     * @throws Throwable 
  7.     */ 
  8.    @Override 
  9.    public boolean test(Context context) throws Throwable { 
  10.        AudioStreamInfo audioStreamInfo = new AudioStreamInfo.Builder().encodingFormat( 
  11.                AudioStreamInfo.EncodingFormat.ENCODING_PCM_16BIT) 
  12.                .channelMask(AudioStreamInfo.ChannelMask.CHANNEL_IN_STEREO) 
  13.                .sampleRate(AUDIO_SAMPLE_RATE) 
  14.                .build(); 
  15.        AudioCapturerInfo audioCapturerInfo = new AudioCapturerInfo.Builder().audioStreamInfo(audioStreamInfo).build(); 
  16.        try { 
  17.            AudioCapturer capturer = new AudioCapturer(audioCapturerInfo); 
  18.            // 錄音 
  19.            capturer.start(); 
  20.            new Timer().schedule(new TimerTask() { 
  21.                @Override 
  22.                public void run() { 
  23.                    capturer.stop(); 
  24.                } 
  25.            }, AUDIO_RECORDING_TIME); 
  26.            // 沒有發生異常,有權限 
  27.            return true
  28.        } catch (Exception e) { 
  29.            // 發生異常,無權限 
  30.            return false
  31.        } 
  32.    } 

桃夭在判斷用戶是否授權時,上面的兩種方式都使用了。

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

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

https://harmonyos.51cto.com

 

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

2024-07-26 16:17:22

2021-05-06 16:21:55

鴻蒙HarmonyOS應用開發

2012-07-30 09:32:00

Web

2017-04-21 16:00:09

2022-12-26 00:00:01

Go框架前端

2018-05-03 19:14:23

iOS開發框架API

2021-10-12 10:50:31

鴻蒙HarmonyOS應用

2024-07-31 08:01:48

2024-02-18 12:44:22

2025-01-07 08:20:00

2021-07-30 14:54:54

鴻蒙HarmonyOS應用

2010-03-02 10:59:04

2015-06-18 10:20:12

Swift初學者權限

2010-08-20 12:01:02

SNMP管理框架

2010-10-28 11:17:29

Oracle系統權限

2024-11-04 08:16:08

Go語言Web 框架

2020-11-26 10:08:17

Golang GinW

2024-12-16 00:48:39

Gin框架函數

2017-07-11 09:21:40

quartzshiro權限框架

2022-02-18 08:34:33

JavaSa-Token項目
點贊
收藏

51CTO技術棧公眾號

欲求不满的岳中文字幕| 在线视频欧美一区| 国产精品第5页| 欧美激情电影| 日韩三级电影网址| 黄色www网站| 国产黄色在线| 狠狠色伊人亚洲综合成人| 欧美成在线视频| 波多野结衣办公室33分钟| 久久av影院| 亚洲激情图片qvod| 日产中文字幕在线精品一区| 国产精品污视频| 免费看亚洲片| 九九综合九九综合| 国产aⅴ激情无码久久久无码| 99久久99九九99九九九| 色呦呦网站一区| 日韩免费在线观看av| 高h视频在线| 成人av电影免费在线播放| 国产精品亚洲视频在线观看| 五月天婷婷网站| 久久精品影视| 在线观看日韩av| 亚洲精品乱码久久久久久久| 在线精品国产亚洲| 欧美乱熟臀69xxxxxx| 日日碰狠狠躁久久躁婷婷| 人人澡人人添人人爽一区二区| 国产亚洲一二三区| 精品国产一区二区三区免费| 国产高清精品软件丝瓜软件| 日本亚洲天堂网| 国产69久久精品成人| 九九热国产精品视频| 久久亚洲国产| 中文字幕不卡在线视频极品| a视频免费观看| 大桥未久女教师av一区二区| 欧美一二三区在线观看| 亚洲一级片网站| 日韩a**中文字幕| 精品福利在线看| 亚洲精品蜜桃久久久久久| 菠萝菠萝蜜在线视频免费观看| 国产精品每日更新在线播放网址| 日韩三级在线播放| 狠狠v欧美ⅴ日韩v亚洲v大胸| 99久久精品国产麻豆演员表| 国产伦理一区二区三区| 午夜精品久久久久久久96蜜桃| 精品一区二区综合| 91香蕉亚洲精品| av中文在线观看| 国产精品一区二区在线观看不卡| 国产在线观看精品| 一卡二卡三卡在线| 国产一区三区三区| 147欧美人体大胆444| a天堂在线视频| 国产麻豆视频一区二区| 51精品国产人成在线观看| www.xxx国产| 国产91精品免费| 国产精品视频一区二区三区经| 亚洲精品久久久久久动漫器材一区 | 国产www视频在线观看| 一区二区三区波多野结衣在线观看| 肉大捧一出免费观看网站在线播放 | 久久露脸国语精品国产91| 在线视频精品| 日韩av大片免费看| 国产偷人爽久久久久久老妇app | 999精品国产| 国产成人av电影| 久久99国产精品99久久| 精品电影在线| 一区在线播放视频| 毛片av在线播放| 麻豆网站免费在线观看| 色偷偷成人一区二区三区91| 天堂网在线免费观看| 日韩精品视频中文字幕| 亚洲黄色免费三级| 超薄肉色丝袜一二三| 久久久久久久久丰满| 久久人人爽人人爽人人片av高请 | 在线成人直播| 97久久伊人激情网| 欧美另类高清videos的特点| 国产一区二区日韩精品| 精品乱子伦一区二区三区| 国产51人人成人人人人爽色哟哟| 亚洲欧美在线另类| 免费在线观看视频a| 韩日精品一区| 日韩你懂的电影在线观看| 少妇真人直播免费视频| 亚洲成人三区| 欧美在线视频免费| 国产免费无遮挡| 久久美女高清视频| 欧美少妇一区二区三区| 日本免费久久| 日韩一级大片在线| 免费成人深夜天涯网站| 99国产精品99久久久久久粉嫩| 国产精品国语对白| 丰满人妻妇伦又伦精品国产| 国产日本欧洲亚洲| 国产 日韩 欧美在线| 人人玩人人添人人澡欧美| 日韩av影片在线观看| 女同久久另类69精品国产| 亚洲一区日韩| 不卡的av一区| 91伦理视频在线观看| 岛国精品视频在线播放| 国产成人强伦免费视频网站| 精品美女视频| 91精品国产色综合久久不卡98| 国产精品视频久久久久久| 久久久久久久综合色一本| 国产 欧美 日韩 一区| www.26天天久久天堂| 精品亚洲一区二区| 久久久久久久极品内射| 九色综合国产一区二区三区| 日本精品一区二区三区不卡无字幕| a级片免费在线观看| 欧美一区二区三级| 国产三级aaa| 日韩激情一二三区| 欧美极品视频一区二区三区| 国产乱码午夜在线视频| 精品国产乱码久久久久久蜜臀| 日本高清一二三区| 国内精品免费**视频| 亚洲区一区二区三区| 国产另类xxxxhd高清| 日韩精品在线免费| 欧美一二三区视频| www.欧美日韩国产在线| 成人免费在线网| 亚洲精品aⅴ| 欧美黄色小视频| 国产ts变态重口人妖hd| 亚洲欧美日韩国产另类专区| 亚洲天堂网2018| 999国产精品| 国产综合色香蕉精品| 在线观看h片| 欧美精品第1页| 亚洲AV成人无码精电影在线| 精品一区二区精品| 国产高潮呻吟久久久| 国产精品日本一区二区三区在线 | 欧美一区二区三区在| 极品美妇后花庭翘臀娇吟小说| 麻豆成人久久精品二区三区红| 亚洲乱码一区二区三区| 成人黄色理论片| 欧美成人精品一区二区| 亚洲黄色小说网址| 亚洲成人你懂的| 色天使在线视频| 久久精品一本| 一区二区三区av| 日本少妇精品亚洲第一区| 欧美激情视频网站| 欧美美女搞黄| 欧美色男人天堂| 国产人妻精品一区二区三区不卡| 国产成人亚洲精品狼色在线| 亚洲熟妇av日韩熟妇在线| 九一成人免费视频| 成人av番号网| www.51av欧美视频| 亚洲性夜色噜噜噜7777| 国产三级自拍视频| 精品久久久久久亚洲精品| 天天躁夜夜躁狠狠是什么心态| 久国产精品韩国三级视频| 性高湖久久久久久久久aaaaa| 校花撩起jk露出白色内裤国产精品 | 视频一区国产视频| 一区二区视频在线播放| xvideos.蜜桃一区二区| 国产91热爆ts人妖在线| 日本在线免费播放| 精品对白一区国产伦| 无码人妻黑人中文字幕| 亚洲品质自拍视频| 六月婷婷七月丁香| 国产麻豆欧美日韩一区| 欧美 国产 日本| 亚洲国产一区二区三区在线播放| 精品一区二区三区国产| 亚洲tv在线| 欧美中文字幕在线视频| av在线官网| 亚洲欧洲黄色网| 国内精品久久久久久久久久久| 欧美视频中文在线看| 蜜臀av午夜精品久久| 99re热这里只有精品视频| 精品综合久久久久| 视频一区在线播放| 日本十八禁视频无遮挡| 图片小说视频色综合| 欧美日韩在线一二三| 日韩免费高清视频网站| 国产精品视频永久免费播放 | 大色综合视频网站在线播放| 国产精品久久久久久久久久久久午夜片 | 国产肥臀一区二区福利视频| 亚洲一本二本| 午夜精品区一区二区三| 国产精东传媒成人av电影| 成人亚洲欧美一区二区三区| 素人啪啪色综合| 51久久精品夜色国产麻豆| 羞羞视频在线免费国产| 日韩在线小视频| 国产精品一区二区三区四区色| 亚洲精品国产拍免费91在线| 精品国产999久久久免费| 欧美日韩一区精品| 亚洲精品一区二三区| 黑人欧美xxxx| 日韩免费一级片| 亚洲一区二区在线免费观看视频| 日本精品在线免费观看| 国产精品水嫩水嫩| 日韩不卡av在线| 久久久久免费观看| 少妇光屁股影院| 93久久精品日日躁夜夜躁欧美| 国产精品一区二区无码对白| 国产河南妇女毛片精品久久久 | 国产在线一区视频| 一区二区三区日韩欧美精品| 91高清免费观看| 亚洲品质自拍视频| 玖玖爱免费视频| 亚洲自拍偷拍欧美| 久久久久久久久久久久久久免费看 | 91网址在线观看| 免费91麻豆精品国产自产在线观看| 麻豆最新免费在线视频| 久久精品电影一区二区| 精品麻豆一区二区三区| 另类专区欧美制服同性| 日韩精品亚洲人成在线观看| 欧美激情精品久久久久久变态| 在线观看电影av| 久久久久久久久久国产| 草草在线视频| 清纯唯美日韩制服另类| 91看片一区| 成人性生交大片免费看小说| 色妞ww精品视频7777| 国产女主播一区二区三区| 久久免费视频66| 欧美日韩三区四区| 欧美电影《睫毛膏》| 男女h黄动漫啪啪无遮挡软件| 欧美国产专区| 91九色在线观看视频| 美女精品网站| 日韩欧美国产片| 国产一区二区三区免费在线观看| 丰满熟女人妻一区二区三区| 99精品在线观看视频| 免费在线观看a视频| 日韩美女啊v在线免费观看| 欧美另类视频在线观看| 精品久久久久久久久久| 国产乡下妇女三片| 日韩女同互慰一区二区| 蜜桃成人在线视频| 久久精品国产欧美亚洲人人爽| 国产又色又爽又黄刺激在线视频| 日本韩国在线不卡| 亚洲在线资源| 久久精品国产第一区二区三区最新章节| 国产在视频线精品视频www666| 国产精品99久久久久久大便| 在线播放日韩| 蜜桃免费在线视频| 国产成人在线电影| 在线视频第一页| 一区二区三区在线播| 精品黑人一区二区三区| 日韩精品一区二区在线| 国产尤物视频在线| 欧美日韩国产va另类| 香蕉视频亚洲一级| 97se亚洲综合| 成人系列视频| 免费欧美一级视频| 国产美女在线精品| 波多野在线播放| 亚洲国产日韩a在线播放性色| 国产免费a视频| 亚洲精品动漫100p| 国产乱色在线观看| 日本最新高清不卡中文字幕| 大香伊人久久精品一区二区| 一区二区三区|亚洲午夜| 久久久久综合| 视频免费在线观看| 亚洲欧美另类小说| 亚洲精品无码久久久久| 亚洲精品mp4| 影院在线观看全集免费观看| 国产精品老女人视频| 欧美大胆视频| 欧洲精品在线播放| 国产一区二区按摩在线观看| 摸摸摸bbb毛毛毛片| 欧美视频一区二区三区…| www.激情五月.com| 久久久精品视频成人| 成人国产精品| 日韩妆和欧美的一区二区| 国产欧美日韩综合一区在线播放| 色诱av手机版| 亚洲色图制服诱惑| 一区二区三区免费观看视频| 亚洲日韩第一页| 二区三区不卡| 免费成人av网站| 亚洲一区二区三区高清| 水蜜桃av无码| 亚洲超碰精品一区二区| 亚洲黄色在线观看视频| 欧美精品制服第一页| 高清久久精品| 日本高清xxxx| 国产又黄又大久久| 欧美日韩中文字幕在线观看| 5858s免费视频成人| 日本不卡在线| 91视频免费在线| 中文字幕一区二区三区久久网站| 午夜国产福利在线观看| |精品福利一区二区三区| 一级全黄少妇性色生活片| 色偷偷噜噜噜亚洲男人| japansex久久高清精品| 日韩专区第三页| 成人亚洲一区二区一| 日韩成人高清视频| 国产视频欧美视频| 日本精品不卡| 亚洲激情啪啪| 极品美女销魂一区二区三区免费| 老湿机69福利| 亚洲成人免费在线视频| 美女在线视频免费| 日本婷婷久久久久久久久一区二区 | 日本一级黄视频| 成人免费黄色在线| 亚洲永久精品在线观看| 曰本色欧美视频在线| 伦一区二区三区中文字幕v亚洲| 日韩 欧美 自拍| 成人午夜电影久久影院| 六月丁香婷婷综合| 尤物yw午夜国产精品视频| 国产精品麻豆| 日本韩国欧美在线观看| 亚洲国产精品激情在线观看| 99国产精品99| 97视频在线观看免费高清完整版在线观看 | eeuss影院www在线观看| 亚洲精品免费一区二区三区| 亚洲二区精品| 国产又粗又硬视频| 日韩视频免费直播| 国产高清不卡| 妞干网这里只有精品| 91在线看国产| 国产又爽又黄又嫩又猛又粗| 欧美黑人一级爽快片淫片高清| 综合伊思人在钱三区| 尤物网站在线看| 欧美色videos| 在线观看免费网站黄| a级国产乱理论片在线观看99| 免费在线成人| 中文字幕在线有码| 亚洲欧美日韩一区二区三区在线| 精品一区91| 成人亚洲视频在线观看| 亚洲一卡二卡三卡四卡五卡| 国产高清在线|