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

北条麻妃国产九九精品视频| 99视频这里有精品| 国产91富婆露脸刺激对白 | 内射后入在线观看一区| 亚洲欧美综合国产精品一区| 欧美男生操女生| 中国人体摄影一区二区三区| 超碰福利在线观看| 亚洲经典在线| 亚洲最新视频在线| 熟妇无码乱子成人精品| 26uuu亚洲电影在线观看| 不卡视频在线观看| 欧美黑人性视频| 女人又爽又黄免费女仆| 久久伦理中文字幕| 色悠悠久久综合| 色姑娘综合网| 日韩在线观看视频一区| 日本一不卡视频| xxx一区二区| 欧美日韩一区二区区| 欧美性xxx| 亚洲欧美日韩国产手机在线| 蜜桃传媒一区二区| 一级黄色免费看| 日韩一区二区中文| 国产丝袜一区视频在线观看| 伊人五月天婷婷| 成人三级高清视频在线看| 中文字幕一区二区三中文字幕| 成人免费在线看片| 亚洲手机在线观看| 亚洲精品黄色| 欧美成人午夜激情在线| 国产成人福利在线| 久久这里只有精品一区二区| 欧美色偷偷大香| 国产极品尤物在线| 日本在线观看网站| 99久久99久久精品免费观看| 91丝袜美腿美女视频网站| 国产精品免费精品一区| 亚洲国产高清一区| 久精品免费视频| 999精品视频在线观看播放 | 国产精品手机视频| 国产精品一区二区免费视频| 欧美一级生活片| 日韩欧美在线播放视频| 丰满大乳少妇在线观看网站| 成人不卡免费av| 亚洲jizzjizz日本少妇| 天堂网一区二区| 国产亚洲在线观看| 国内精品小视频| 久久久久久免费观看| 亚洲国产精品日韩专区av有中文| 最近更新的2019中文字幕| 色欲欲www成人网站| 亚洲精品自拍| 欧美日韩国产天堂| 久久久久久久久久久99| 欧美一区二区公司| zzijzzij亚洲日本少妇熟睡| 国产裸体写真av一区二区| 久草国产在线观看| 韩日欧美一区| 久久久久久欧美| 日韩精品在线免费看| 91亚洲人成网污www| 日韩中文字幕第一页| 亚洲最大成人网站| 精品久久美女| 中文字幕欧美精品在线 | 日本网站在线免费观看| 亚洲激情在线| 欧洲日韩成人av| 久久99久久久| 99国产精品久久久久久久| 国产91成人在在线播放| 一二三区免费视频| 久久国产剧场电影| 51国产成人精品午夜福中文下载| 亚洲欧美激情国产综合久久久| 国产成人aaa| 久久草视频在线看| 精品视频一二三| 国产精品福利一区二区| 美女黄色免费看| 日韩大片免费观看| 欧美日韩精品欧美日韩精品一 | 国产精品日韩久久久久| 亚洲视频中文字幕在线观看| 国产精品亚洲第一| 久久久www免费人成黑人精品| 欧美孕妇性xxxⅹ精品hd| 国产欧美一区二区精品忘忧草| 永久久久久久| 搞黄网站在线看| 在线免费观看成人短视频| 青春草国产视频| 国精产品一区二区三区有限公司 | 国产乱色精品成人免费视频| 成人毛片在线观看| 日韩免费中文专区| 色呦呦呦在线观看| 日本国产一区二区| 亚洲午夜激情影院| 日韩av午夜| 久久精品久久久久电影| 日本高清www免费视频| 麻豆精品一区二区| 亚洲一区二区在线| 青青色在线视频| 中文字幕制服丝袜成人av| 99热一区二区三区| 三上悠亚亚洲一区| 精品va天堂亚洲国产| 久久只有这里有精品| 欧美精选一区| 国产精品三级美女白浆呻吟| 懂色av蜜臀av粉嫩av分享吧最新章节| 蜜乳av一区二区| 精品一区二区三区国产| 在线中文字幕视频观看| 欧美性xxxx| 不许穿内裤随时挨c调教h苏绵| 欧美日韩国产一区二区三区不卡 | 欧美在线观看18| 中国xxxx性xxxx产国| 91精品啪在线观看国产18| 欧美与黑人午夜性猛交久久久| 日本免费在线观看视频| 成人h动漫精品一区二区| 99久久久无码国产精品性色戒| 欧美特大特白屁股xxxx| 日韩av在线最新| 国产精品16p| 久久er99热精品一区二区| 日韩视频在线播放| 日本免费一区二区三区四区| 精品福利一二区| 欧美国产在线看| 麻豆国产精品一区二区三区| 欧美性大战久久久久| 蜜桃视频动漫在线播放| 欧美精品一区二区三区四区 | 黄色av网站免费在线观看| 久久久久久电影| 国产精品免费观看久久| 欧美福利在线播放网址导航| 中日韩美女免费视频网址在线观看| 成人午夜淫片100集| 99re视频这里只有精品| 国产欧美久久久久| 亚洲欧美专区| 久久精品视频va| 国产尤物视频在线观看| 欧美国产日本视频| 九一精品在线观看| 日韩片欧美片| 国产精品免费视频xxxx| fc2在线中文字幕| 色先锋资源久久综合| 法国伦理少妇愉情| 日韩高清欧美激情| 精品欧美日韩在线| 嗯~啊~轻一点视频日本在线观看| 精品久久久久香蕉网| 中文在线观看免费网站| 成人免费va视频| 日本www在线视频| 欧美调教网站| 午夜精品久久久99热福利| 亚洲精品网站在线| 精品久久久久久久久久久久| 9.1成人看片免费版| 久久亚洲图片| 一个色的综合| 视频欧美一区| 久久久久久午夜| 三级视频在线播放| 亚洲成人第一页| 三级黄色片网站| 男人的天堂亚洲一区| 精品一区二区成人免费视频| 成人国产网站| 色综合久久悠悠| 五月激情婷婷综合| 在线观看亚洲一区| 美国黄色小视频| 99久久精品国产麻豆演员表| 中文字幕欧美人妻精品一区| 欧美激情电影| 国产区欧美区日韩区| 日韩成人影音| 欧美成人激情图片网| 国内精品久久久久久久久久久| 亚洲成av人片在线观看| 中文字幕在线观看的网站| 久久精品国产一区二区三区免费看| 国产激情在线看| 久久爱www成人| 成人在线播放av| 免费在线看污片| 一区二区欧美亚洲| 99久久精品国产一区色| 亚洲一区二区三区自拍| a级片在线观看| 日日夜夜免费精品| 男人天堂网站在线| 不卡在线一区| 91久色国产| 成人免费在线观看视频| 97国产suv精品一区二区62| 91高清在线视频| 日韩av综合网| 国产黄色大片网站| 亚洲午夜在线电影| www色aa色aawww| 国产亚洲一本大道中文在线| 最新国产精品自拍| 精品一区二区三区免费观看 | 欧美日韩免费| 亚洲一卡二卡三卡四卡无卡网站在线看| 国产精品极品在线观看| 成人免费视频网| 忘忧草在线www成人影院| 欧美激情在线狂野欧美精品| 黄色视屏免费在线观看| 亚洲热线99精品视频| 三级在线观看网站| 精品国一区二区三区| 国产裸体无遮挡| 欧美日韩极品在线观看一区| 国产精品视频久久久久久久| 夜夜精品浪潮av一区二区三区| 久草福利资源在线| 国产精品天美传媒| 30一40一50老女人毛片| 国产精品综合二区| 欧美国产日韩在线视频| 久久影院亚洲| 一女被多男玩喷潮视频| 国内自拍一区| 久久久无码中文字幕久...| 久久亚洲国产| 亚洲午夜精品久久久中文影院av| 国产精品片aa在线观看| 欧美三日本三级少妇三99| 日韩av不卡一区| 韩国成人av| 日韩av三区| 欧美动漫一区二区| 狼人天天伊人久久| 99国精产品一二二线| 亚洲一区二区三区四区电影| 97神马电影| 99精品国产高清一区二区麻豆| 99精品99久久久久久宅男| 视频精品国内| 精品麻豆av| 国产精品一区二区99| 日韩wuma| 婷婷综合在线| 亚洲欧美日韩综合一区| 日韩成人影院| 日韩三级电影网站| 亚洲91视频| 成人高清dvd| 亚洲激情专区| 日韩一级免费在线观看| 久久夜色精品| 尤物国产在线观看| 国产精品综合一区二区三区| 国产精品果冻传媒| av不卡免费电影| 性欧美一区二区| 国产精品日产欧美久久久久| 亚洲不卡的av| 亚洲女同一区二区| 99精品视频99| 一本久久综合亚洲鲁鲁五月天| 波多野结衣午夜| 欧洲激情一区二区| 国产免费久久久| 欧美哺乳videos| 欧美少妇另类| 日韩在线观看成人| sm久久捆绑调教精品一区| 欧美有码在线观看视频| 精品欧美日韩精品| 999视频在线免费观看| 精品一区二区男人吃奶| 欧美一区激情视频在线观看| 91精品国产调教在线观看| 日韩一级性生活片| 青娱乐精品视频在线| 性色av浪潮av| 91首页免费视频| 精品无码一区二区三区蜜臀| 午夜久久久久久久久久一区二区| 亚洲s码欧洲m码国产av| 91精品国产综合久久久久久久| 99久久精品国产色欲| 亚洲女人被黑人巨大进入| 国内外激情在线| 青青久久av北条麻妃黑人| 久久爱www.| 欧美日韩在线不卡一区| 欧美1区2区3区| 国产成人av影视| 成人国产精品视频| 国产又粗又猛又爽又黄的视频小说| 亚洲v精品v日韩v欧美v专区| 一级做a爱片久久毛片| 精品在线小视频| 里番在线播放| 国产精品一区二区三| 亚洲最好看的视频| 全黄性性激高免费视频| 国产真实精品久久二三区| 欧美大片免费播放器| 亚洲丝袜美腿综合| www.久久网| 亚洲精品综合久久中文字幕| 香蕉久久aⅴ一区二区三区| 国产精品一区二区久久| 国产精品久久久久av蜜臀| 91九色国产ts另类人妖| 日韩精品电影在线观看| 一区二区免费av| 91色九色蝌蚪| 男人的天堂一区二区| 日韩三级免费观看| 888av在线| 国产精品久久精品| 国模精品一区| 国产第一页视频| 久久久久久久综合日本| 亚洲国产美女视频| 欧美日韩久久一区二区| h视频在线播放| 国产精品亚洲网站| 日韩中字在线| 久热精品在线播放| 国产精品成人在线观看| 在线观看你懂的网站| 亚洲精品国产精品乱码不99按摩 | 精品国产一区二区三区性色av| 亚洲成人a**址| 日本美女一区二区三区视频| 中文字幕天堂网| 亚洲成a人片在线观看中文| 黄色www视频| 91精品国产免费久久久久久| 91精品国产自产在线丝袜啪| 91制片厂免费观看| 国产精品资源在线看| 五月天精品视频| 午夜在线电影亚洲一区| 精品人妻一区二区三区蜜桃| 欧美成人网在线| 精品视频一区二区三区| 国产一级片91| www.亚洲人| 99视频在线看| 亚洲人成电影网站色www| 亚洲精品一区三区三区在线观看| 免费观看成人在线| 日韩高清一级片| jizz日本在线播放| 制服.丝袜.亚洲.另类.中文| 少女频道在线观看免费播放电视剧| 国产高清在线一区二区| 夜久久久久久| 99久久久无码国产精品衣服| 欧美日韩综合一区| yiren22综合网成人| 亚洲伊人久久综合| 亚洲美女黄色| 最新中文字幕视频| 欧美日韩国产综合久久| 久久大胆人体| 欧美高清视频一区二区三区在线观看| 免费视频一区| 成熟妇人a片免费看网站| 色综合咪咪久久| 精品美女在线观看视频在线观看| 97影院在线午夜| 免费在线日韩av| 久久久久久久麻豆| 精品捆绑美女sm三区| 亚洲欧美在线成人| 蜜桃网站在线观看| 亚洲国产精品国自产拍av| 午夜精品久久久久久久96蜜桃 | 欧美精品丝袜中出| 华人av在线|