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

程序猿如何從產品的角度去提升應用的體驗之Android權限優化篇

移動開發 Android
推送對于一個APP來說是很重要的功能。推送在好的產品設計中可以有效地提高產品活躍度,增加用戶的忠誠度以及留存率。但是,用戶有可能會在無意中把應用的通知權限給禁止了,導致收不到推送(用戶主動禁止應用的通知權限除外)。

前言:大家平時在開發的過程中是否會遇到這種情況:很多產品體驗上的細節,特別是涉及到技術相關的細節,產品與設計可能并不會給出詳細的解決方案,甚至可能并不太關注這方面的體驗細節。例如,應用的緩存清理機制該怎么實現?權限申請的時機應該放在哪?用戶沒有給予應用必要的權限該怎么處理......這種時候,作為一個開發人員,特別是對自家產品的使用體驗有追求的開發人員,其實完全可以充當一回產品,從產品的角度出發去思考,該怎樣在技術實現的細節上,讓自家的APP體驗變得更好。千萬不要小瞧這些細節,一個產品的***體驗,就是由無數的細節堆砌而成的。

1. 應用通知權限的優化

眾所周知,推送對于一個APP來說是很重要的功能。推送在好的產品設計中可以有效地提高產品活躍度,增加用戶的忠誠度以及留存率。但是,用戶有可能會在無意中把應用的通知權限給禁止了,導致收不到推送(用戶主動禁止應用的通知權限除外)。例如,華為手機會在通知中心直接提示用戶是否關掉某個應用的通知權限。如果用戶,特別是小白用戶一不小心把通知權限給禁止了,導致應用收不到推送,反而可能還會把這種情況當做bug來向客服反饋(任何時候都千萬不要高估用戶對于智能手機使用的了解,尤其是你的APP的目標用戶還包括中老年人的時候)。 

 

華為手機的推送中心 

如果大家有細心觀察的話會發現,當應用的通知權限被禁止的時候,體驗好的應用會在適當的時機以及場景下出現提示,告知用戶通知在應用中起到的作用,嘗試去消除用戶的不信任和謹慎心理,并引導用戶去打開通知權限。

那么,我們怎么知道自己的應用程序通知權限被禁止了呢?如果被禁止了又該怎么辦呢?下面就來說一下解決方案。

1.1 檢測應用的通知權限狀態

檢測應用的通知權限其實比較簡單。通過查詢 官方文檔 可以發現,在support庫的API 24.0.0 版本,已經有現成的方法可以直接查詢應用的通知權限狀態:

  1. NotificationManagerCompat.from(this).areNotificationEnable(); 

但是,這就意味著應用的 compileSdkVersion 也需要與support庫的版本保持一致。如果應用目前所使用的compileSdkVersion 低于 24.0.0 或者由于某些歷史原因而不能將compileSdkVersion 升到 24.0.0以上,那么就沒有辦法檢測到應用的通知權限了嗎?

其實,辦法還是有的。通過查看系統源碼,可以發現,NotificationManagerCompat.from(this).areNotificationEnable() 這個方法在不同版本的SDK上會有不同的實現。

  1. /** 
  2.  
  3. Returns whether notifications from the calling package are not blocked. 
  4.  
  5. */ 
  6.  
  7. public boolean areNotificationsEnabled() {  
  8.     return IMPL.areNotificationsEnabled(mContext, mNotificationManager); 
  9.  
  10.  

IMPL是一個實現了Impl接口的實現類對象,而且在靜態代碼塊中通過判斷手機系統所使用的版本號來初始化不同的實現類:

  1. static {    if (BuildCompat.isAtLeastN()) { 
  2.         IMPL = new ImplApi24(); 
  3.     } else if (Build.VERSION.SDK_INT >= 19) { 
  4.         IMPL = new ImplKitKat(); 
  5.     }  else if (Build.VERSION.SDK_INT >= 14) { 
  6.         IMPL = new ImplIceCreamSandwich(); 
  7.     } else { 
  8.         IMPL = new ImplBase(); 
  9.     } 
  10.     SIDE_CHANNEL_BIND_FLAGS = IMPL.getSideChannelBindFlags(); 
  11.  

當手機系統Android版本小于4.4.0的時候, areNotificationEnable()方法會默認返回true。所以,此方法只有在4.4.0以上的手機系統上才能返回準確的結果。

  1. /** 
  2.  * Returns whether notifications from the calling package are blocked. 
  3.  */ 
  4. public boolean areNotificationsEnabled() { 
  5.     INotificationManager service = getService(); 
  6.     try {        return service.areNotificationsEnabled(mContext.getPackageName()); 
  7.     } catch (RemoteException e) { 
  8.         throw e.rethrowFromSystemServer(); 
  9.     } 
  10.  

這種反射的方式實際上就是通過AppOpsManager和AppOpsService去獲取位于/data/system/目錄下的文件Appops.xml里的數據。所以,這個系統源碼里的方法可以單獨抽取出來作為一個通用的檢測通知權限狀態的方法。有關AppOpsManager,這里先不做展開,等下在1.4章節單獨說一下。

1.2 引導用戶跳轉到通知權限設置界面

既然已經能檢測到應用的通知權限狀態,當應用的通知權限被禁止的時候,應該出現提示告知用戶通知在應用中起到的作用,并引導用戶去打開通知權限。以下為跳轉到通知權限設置的通用方法:

  1. public void toNotificationSetting() {    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
  2.         Intent intent = new Intent(); 
  3.         intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS"); 
  4.         intent.putExtra("app_package", this.getPackageName()); 
  5.         intent.putExtra("app_uid", this.getApplicationInfo().uid); 
  6.         startActivity(intent); 
  7.     } else if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { 
  8.         Intent intent = new Intent(); 
  9.         intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
  10.         intent.addCategory(Intent.CATEGORY_DEFAULT); 
  11.         intent.setData(Uri.parse("package:" + this.getPackageName())); 
  12.         startActivity(intent); 
  13.     } 
  14.  

在5.0以上,可以直接跳轉到某個應用的通知權限快捷設置界面。但是在5.0以下,暫時還沒有找到可以直接跳轉到通知權限設置界面的方法,所以目前的做法是跳轉某個應用的設置界面,在設置界面列表中應該會有通知權限管理的入口。如果你有更好的做法,歡迎在評論中指出來。這里再另外拋出一個問題,供大家思考:關于通知權限提示的方案,應該在什么時機或場景下出現好?出現提示的頻率為多少好呢?是只提示一次呢,還是只要用戶沒打開通知權限就一直提示呢?歡迎大家在留言中說出自己的看法。

1.3 當通知權限被關閉后,Toast可能無法正常工作的問題

雖然跟通知權限的優化沒什么關系,不過在這里還是要提一下。這個是在調研通知權限優化問題的時候偶然發現的坑:在大部分的機型上,當應用的通知權限被關閉后,系統的 Toast會直接無法正常工作。

以下是我測試過的數據:

 

可以看出,這個坑影響的機型范圍還是挺大的。為什么會這樣呢?

查閱源碼后可以發現 Toast 里也用到了NotificationManagerService。在Toast執行show()方法后,執行到enqueueToast()的時候如下:

  1. if (ENABLE_BLOCKED_TOASTS && !noteNotificationOp(pkg, Binder.getCallingUid())) {    if (!isSystemToast) { 
  2.         Slog.e(TAG, "Suppressing toast from package " + pkg + " by user request.");        return
  3.     } 
  4.  

原來這里也用到了檢測通知權限的方法noteNotificationOp()。如果通知權限被禁止了,那么Toast也就無法正常工作。

對于Android手機來說,Toast在應用中隨處可見,如果因為通知權限導致Toast不工作那么影響還是挺大的。所以,在這里建議大家尋找一下Toast的替代方案,不要在項目中直接使用系統自帶的Toast。同樣的,如果大家有什么好的解決方案,也歡迎在留言中指出來。

1.4 AppOpsManager的工作原理

既然上面提到了AppOpsManager,那么這里來簡單地介紹一下它的工作原理。AppOpsManager的工作框架圖如下:

 

Setting UI通過AppOpsManager與AppOpsService 交互,給用戶提供入口管理各個app的操作。

AppOpsService具體處理用戶的各項設置,用戶的設置項存儲在 /data/system/appops.xml文件中。

AppOpsService也會被注入到各個相關的系統服務中,進行權限操作的檢驗。

各個權限操作對應的系統服務(比如定位相關的Location Service,Audio相關的Audio Service等)中注入AppOpsService的判斷。如果用戶做了相應的設置,那么這些系統服務就要做出相應的處理。比如,LocationManagerSerivce的定位相關接口在實現時,會有判斷調用該接口的app是否被用戶設置成禁止該操作,如果有該設置,就不會繼續進行定位。

2. 應用權限的提示優化

由于篇幅的原因,這里就拿相機權限來舉例。假設需求如下:

在需要使用相機的場景下,先提前檢測相機權限是否打開,如果沒有打開,則嘗試申請相機權限,如果用戶還是拒絕,則出現權限提示,引導用戶去開啟相機權限。下面是微信的處理方式:

(1)6.0系統以上,先嘗試申請相機權限,用戶點擊禁止后彈出引導界面

 

(2)6.0系統以下,用戶點擊保持禁止后彈出引導界面 

 

在6.0以上,我們一般可以通過系統自帶的方法來檢測某個權限是否被允許:

  1. ActivityCompat.checkSelfPermission(context, permission) 

但是,在6.0以下,如果想檢測相機權限,卻沒有一個很好的方法。***,經過查閱各種資料,發現好像只能通過一種簡單粗暴的方式去檢測相機權限:

  1. /** 
  2.  * 在6.0系統以下,通過嘗試打開相機的方式判斷有無拍照權限 
  3.  * 
  4.  * @return 
  5.  */ 
  6. private boolean checkCameraPermissionUnderM() { 
  7.     boolean isCanUse = true
  8.     Camera mCamera = null
  9.     try { 
  10.         mCamera = Camera.open(); 
  11.         Camera.Parameters mParameters = mCamera.getParameters(); 
  12.         mCamera.setParameters(mParameters); 
  13.     } catch (Exception e) { 
  14.         isCanUse = false
  15.     }    if (mCamera != null) { 
  16.         try { 
  17.             mCamera.release(); 
  18.         } catch (Exception e) { 
  19.             e.printStackTrace();            return isCanUse; 
  20.         } 
  21.     }    return isCanUse; 
  22.  

當使用這個方法的時候,在6.0以下的手機,一般調用 Camera.open()方法,如果相機權限沒打開,會先彈出相機權限申請彈框。如果點擊允許,那么該方法就會返回true,點擊禁止則返回false。這里需要指出的是,如果你使用相機的方式是通過Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE)來跳轉到系統的相機界面的話,那么即使應用的相機權限被禁止了,也還是可以正常使用相機來拍照的。這種情況下要不要做權限檢查,就看個人的看法了。

不知道大家有沒注意到,微信在6.0以上和6.0以下彈出的提示對話框有點不同。在6.0以上提供“去設置”的選項,點擊會跳轉到設置里的應用列表界面,在6.0以下僅僅是提示。這也是一個產品的細節。個人看法,因為在6.0以下,有些國產系統的權限管理根本就不在設置里面,而是需要到官方提供的手機管家類型應用里面才可以進行權限的管理。那么多的國產系統,需要適配有點困難,如果沒有很好的解決方案,那么還不如不要擅自幫用戶做決定。可以看得出微信在跳轉到權限設置界面的適配上也經過了一番考量,***選擇了這種折中的方案。

說到這里,既然權限提示優化的思路已經有了,大家也可以在自己的項目中封裝一個權限管理類,“檢查權限-被禁止-嘗試申請權限-被拒絕-彈出提示框-引導用戶去打開權限”通過一個方法一氣呵成。

3. 總結

本文涉及到的知識點可能并不深奧,更多的是想向大家展示一下,假如開發人員從產品的角度去提升應用的體驗,可以從什么角度去切入。如果能給大家帶來一些啟發就好了。看完文章后,不凡思考一下,自己的應用在權限提示上的體驗是否做到***了呢?如果還有可以改善的地方,那么趕緊根據自家應用的實際情況,改善一下權限提示的體驗吧。相信我,做了這件事,你的用戶會感激你的。 

責任編輯:龐桂玉 來源: Android技術之家
相關推薦

2013-09-16 16:01:23

Android開發代碼

2017-01-23 08:19:05

2025-11-05 07:51:14

2024-12-10 00:00:10

MySQLJOIN算法

2023-03-09 16:42:00

程序性能優化Java技巧

2013-04-08 10:16:40

產品產品體驗

2022-03-25 10:23:40

用戶體驗APP優化

2015-09-16 14:37:50

Android性能優化運算

2015-09-16 13:54:30

Android性能優化渲染

2015-09-16 15:48:55

Android性能優化電量

2021-01-06 10:50:27

程序員35歲互聯網

2010-03-18 20:19:16

2011-06-30 17:13:17

SEO用戶體驗

2011-11-07 09:26:51

域樹

2016-11-04 10:30:17

微信小程序

2022-07-15 13:01:13

Kotlin編程語言Java

2009-07-01 13:54:41

Servlet和JSP

2017-04-13 09:45:03

大數據新媒體VC

2018-10-22 20:42:42

網易云信實時音頻算法

2021-08-02 10:50:57

性能微服務數據
點贊
收藏

51CTO技術棧公眾號

午夜视频你懂的| 欧美成人综合一区| 日韩一区二区三区四区在线| 久久久91麻豆精品国产一区| 亚洲一区欧美一区| 免费试看一区| 国产普通话bbwbbwbbw| 亚洲视频观看| 最近2019免费中文字幕视频三 | 僵尸再翻生在线观看免费国语| 99热精品一区二区| 国产精品自产拍在线观看| 麻豆一区产品精品蜜桃的特点| 免费av一区| 日韩视频免费观看高清完整版| 国产美女无遮挡网站| 无遮挡动作视频在线观看免费入口| 国产成人一区在线| 国产精品大片wwwwww| 久久久久亚洲av片无码下载蜜桃 | 自拍另类欧美| 桃花色综合影院| 国产盗摄精品一区二区三区在线 | 精品国产亚洲一区二区三区大结局| 亚洲成av人片在线观看无码| 亚洲一区二区三区四区中文| 亚洲乱码国产乱码精品精软件| 青青草一区二区三区| 欧美极品在线播放| 熟女av一区二区| 精品视频97| 日韩精品在线看| 动漫av在线免费观看| 亚洲精品毛片| 91国产丝袜在线播放| 欧美一级视频免费看| 国产调教视频在线观看| 日本一区二区三区免费乱视频 | 亚洲一区二区三区国产| 亚洲成人在线视频网站| 五月激情婷婷综合| 成人国产精品视频| 97人人澡人人爽| 国产日本精品视频| 精品一区二区三区视频在线观看| 日韩av大片免费看| 日韩美女黄色片| 国语精品一区| 欧美大胆a视频| 九九热最新地址| 亚洲精品成人无限看| 日韩一中文字幕| 少妇高潮惨叫久久久久| 成久久久网站| 在线看日韩欧美| 9.1片黄在线观看| 欧美精品一区二区三区精品| 亚洲午夜激情免费视频| 免费看污黄网站在线观看| 另类在线视频| 精品视频中文字幕| 日韩一级视频在线观看| 丝袜美腿综合| 亚洲天堂日韩电影| 纪美影视在线观看电视版使用方法| 蜜桃精品wwwmitaows| 亚洲欧美国产日韩天堂区| 爱爱免费小视频| 国产欧美日韩在线一区二区| 一区二区三区视频在线| 麻豆视频免费在线播放| 婷婷激情图片久久| 欧美日韩高清区| 奇米影视第四色777| 亚久久调教视频| 国产精品av免费在线观看| 中文字幕久久熟女蜜桃| 久久av老司机精品网站导航| 2014亚洲精品| 天天av天天翘| 日本一二三不卡| 免费极品av一视觉盛宴| 极品美鲍一区| 欧美特级限制片免费在线观看| 国产精品999.| 久久电影在线| 亚洲女人天堂av| 九九这里只有精品视频| 影音先锋久久| 国产精品极品美女粉嫩高清在线| 国产精品视频第一页| 成人综合激情网| 欧美亚洲精品日韩| 丝袜美腿美女被狂躁在线观看| 亚洲黄色录像片| 欧美a在线视频| **日韩最新| 亚洲欧美三级伦理| wwwav国产| 日韩成人av影视| 高清视频在线观看一区| 美女毛片在线看| 亚洲另类色综合网站| 91猫先生在线| 色妞ww精品视频7777| 亚洲精品国产成人| 国产中文av在线| 免费视频久久| 国产精品精品软件视频| 国产中文字幕在线观看| 亚洲综合激情另类小说区| 亚洲五月天综合| 免费看久久久| 欧美人与性动交| 中文字幕在线观看视频一区| 99久久国产免费看| 久久久久久久香蕉| 久久亚洲精品中文字幕| 亚洲精品一区av在线播放| 欧美日韩在线视频免费播放| 日本欧美大码aⅴ在线播放| 99一区二区三区| 国产一二三区在线观看| 欧美视频在线一区二区三区| 欧美大片免费播放器| 欧美色一级片| 国产欧美亚洲视频| 激情小视频在线观看| 亚洲二区在线视频| 特黄特黄一级片| 欧美肥老太太性生活| 日韩av免费一区| 四虎影视在线观看2413| 亚洲五码中文字幕| 三日本三级少妇三级99| 日韩专区精品| 国产精品一区二区三区免费视频 | 午夜宅男在线视频| 久久99国内| 欧美一级视频免费在线观看| 天天操天天射天天| 亚洲大型综合色站| 亚洲午夜久久久久久久久| 综合一区av| 亚洲最大福利视频| 在线观看三级视频| 日韩午夜精品电影| 欧美片一区二区| 国产高清视频一区| www.亚洲成人网| 136国产福利精品导航网址应用| 欧美成人免费小视频| 国产美女无遮挡永久免费| 国产精品对白交换视频| 五月天视频在线观看| 91精品啪在线观看国产81旧版| 91免费人成网站在线观看18| av大大超碰在线| 精品国产乱码久久久久久久 | 久久青青草原一区二区| 欧美aa免费在线| 亚洲一区999| 性色av一区二区三区四区| 国产欧美日韩麻豆91| 久久婷婷综合色| 亚洲影视一区| 国产精品毛片一区视频| 擼擼色在线看观看免费| 国产亚洲精品久久| 中文字幕永久免费视频| 最新热久久免费视频| 台湾佬美性中文| 国产欧美91| 视频一区二区三区在线观看 | 免费精品99久久国产综合精品| 欧美中日韩免费视频| 91av亚洲| 日韩天堂在线视频| 亚洲精品成人区在线观看| 亚洲r级在线视频| 精品国产av无码| 精品亚洲国产成人av制服丝袜| 成人av在线播放观看| 国产精品成人自拍| 国产精品第1页| 免费看电影在线| 一个人看的www久久| av在线免费在线观看| 午夜久久电影网| 国产白丝一区二区三区 | 国产专区一区二区三区| 精品国模一区二区三区| 九九九久久久久久| 麻豆av电影在线观看| 日韩欧美国产麻豆| 秋霞av一区二区三区| 亚洲美腿欧美偷拍| 国产精品成人一区二区三区电影毛片| 极品美女销魂一区二区三区免费| av日韩一区二区三区| 成人激情电影在线| 国产视频一区二区三区四区| 六九午夜精品视频| 69久久夜色精品国产7777| 欧美三级电影一区二区三区| 日韩成人黄色av| 国产高清不卡视频| 在线观看亚洲a| 日本少妇性生活| 亚洲视频香蕉人妖| 免费看裸体网站| www.色精品| 人妻精品久久久久中文字幕69| 久久久亚洲人| 日本福利视频在线| 国内自拍一区| 99热这里只有精品7| 国产影视精品一区二区三区| 国产精品久久波多野结衣| 亚洲狼人在线| 国产欧美va欧美va香蕉在线| 625成人欧美午夜电影| 久久久久久久久久国产| 日p在线观看| 亚洲香蕉在线观看| 青青草视频在线观看| 亚洲成人激情图| 午夜精品久久久久久久99热黄桃 | 九九热视频免费| 麻豆精品一二三| www.色就是色| 日本大胆欧美人术艺术动态| 国产精品无码av无码| 亚洲在线国产日韩欧美| 久久精品国产sm调教网站演员| 欧美va天堂| 免费的av在线| 欧美日韩精品免费观看视频完整| 日韩中文在线字幕| 欧美激情aⅴ一区二区三区| 成人性做爰片免费视频| 人人狠狠综合久久亚洲婷婷| 日韩av高清在线播放| 奇米狠狠一区二区三区| 蜜桃成人在线| 国产aⅴ精品一区二区三区久久| 久久久综合香蕉尹人综合网| 思热99re视热频这里只精品 | av电影在线播放高清免费观看| 一区二区成人精品| 国产小视频在线| 有码中文亚洲精品| av在线免费观看网| 日韩在线观看精品| yellow91字幕网在线| 欧美黑人xxxⅹ高潮交| 草草视频在线| 日本中文字幕不卡免费| 国产69精品久久| 91色视频在线导航| 欧一区二区三区| 国产美女99p| 一区二区导航| 亚洲欧洲一区二区福利| 久久久久国产精品| 国产一级大片免费看| 一区二区亚洲| 日批视频在线免费看| 日韩成人一级大片| 午夜激情视频网| 成人va在线观看| 91精品人妻一区二区三区| 国产精品三级视频| 欧产日产国产v| 欧美午夜性色大片在线观看| 在线观看国产小视频| 日韩写真欧美这视频| 天天av综合网| 日韩亚洲一区二区| 女人天堂av在线播放| 国产v综合v亚洲欧美久久| 久草综合在线| 国产精华一区| 成人在线免费观看网站| 美女av免费观看| 日韩电影在线一区| 少妇熟女视频一区二区三区| 国产欧美日韩在线| 久久一级黄色片| 欧美中文字幕亚洲一区二区va在线 | 人人澡人人澡人人看| 激情成人中文字幕| 96日本xxxxxⅹxxx17| 日韩国产激情在线| jizz性欧美| 国产精品69久久| 黑人久久a级毛片免费观看| 亚洲精品tv久久久久久久久| 亚洲成人原创| 久久久久久久久久毛片| 久久亚洲一区二区三区四区| 黄色一级片中国| 欧美三级在线播放| 香蕉视频911| 欧美精品中文字幕一区| 欧美黄色三级| 国模精品一区二区三区| 国产精品久久久久无码av| 成人在线免费观看av| 国产伦精品一区二区三区在线观看| 亚洲熟妇无码av| 亚洲一区二区三区四区不卡 | 日韩成人在线播放| 成人免费网址| 国产精品一区av| 亚洲精品蜜桃乱晃| av在线播放亚洲| 高清国产一区二区| 国产一区二区视频在线观看免费| 欧美伊人精品成人久久综合97| 亚洲AV第二区国产精品| 欧美大荫蒂xxx| 狂野欧美xxxx韩国少妇| 亚洲国产一区二区三区在线| 国产精品毛片| 中文在线永久免费观看| 一区二区免费在线| 国产日韩免费视频| www.国产精品一二区| 成人在线黄色| 欧美一区二区在线| 一道本一区二区| 国产麻豆xxxvideo实拍| 亚洲一区中文日韩| 成人福利小视频| 欧美激情精品久久久久久大尺度| 国产精品麻豆| 黄色高清视频网站| 国产自产高清不卡| 国产探花在线免费观看| 在线播放中文一区| а√资源新版在线天堂| 91在线免费网站| 欧美在线网站| 亚洲精品鲁一鲁一区二区三区| 一区二区三区在线视频播放| 99热这里只有精品3| 久久伊人精品天天| 国产精品色婷婷在线观看| 国产树林野战在线播放| 国产乱子轮精品视频| 国产又黄又爽又无遮挡| 亚洲精品一区二区在线观看| aa级大片免费在线观看| 精品一卡二卡三卡四卡日本乱码 | 日韩一区电影| 九一精品久久久| 玉足女爽爽91| 东京干手机福利视频| 91高清在线免费观看| 亚洲人挤奶视频| 爱情岛论坛亚洲首页入口章节| 国产精品美日韩| 国产xxxxxx| 久久久久女教师免费一区| 啪啪激情综合网| 成人黄色一区二区| 亚洲欧美日韩一区二区三区在线观看| 国产av无码专区亚洲av麻豆| 国内精品久久久久久影视8| 伊人春色精品| 亚洲免费av一区| 亚洲成人免费在线| 欧美91精品久久久久国产性生爱| 国产精品揄拍500视频| 中文字幕日韩欧美精品高清在线| 久久久久亚洲AV成人网人人小说| 一本一本大道香蕉久在线精品 | 国产精品av在线| 你懂的成人av| 一级片视频免费看| 日韩一区和二区| 久久综合色88| 国产综合欧美在线看| 国产欧美日韩| 97超碰成人在线| 国产精品美女一区二区三区| 99精品在线视频观看| 韩国精品久久久999| 色棕色天天综合网| 男女视频在线观看网站| 婷婷丁香久久五月婷婷| 国产二区在线播放| 亚洲专区中文字幕| 免播放器亚洲| www青青草原| 亚洲欧美日韩精品久久| 精品一区二区三区免费看| 99精品人妻少妇一区二区| 最好看的中文字幕久久|