日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 外置 SD 卡写入权限问题

發布時間:2024/3/13 Android 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 外置 SD 卡写入权限问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://busy.im/post/android-sdcard-write/

?

最近升級到 Android 9.0 后,發現文件管理器在寫入外置 SD 卡時出現了寫入失敗的問題,定位到 File.canWrite() 方法,發現返回了 false。經過討論追蹤定位,發現是由于 Google 的一個更改導致的:

diff --git a/data/etc/platform.xml b/data/etc/platform.xml index 04006b1..3021555 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -62,7 +62,6 @@<permission name="android.permission.WRITE_MEDIA_STORAGE" ><group gid="media_rw" /> - <group gid="sdcard_rw" /></permission><permission name="android.permission.ACCESS_MTP" > diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index a0cb722..940d19f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -20936,9 +20936,6 @@if (Process.isIsolated(uid)) {return Zygote.MOUNT_EXTERNAL_NONE;} - if (checkUidPermission(WRITE_MEDIA_STORAGE, uid) == PERMISSION_GRANTED) { - return Zygote.MOUNT_EXTERNAL_DEFAULT; - }if (checkUidPermission(READ_EXTERNAL_STORAGE, uid) == PERMISSION_DENIED) {return Zygote.MOUNT_EXTERNAL_DEFAULT;}

這里的修改移除了 WRITE_MEDIA_STORAGE 權限相關權限,導致了外部 SD 卡存儲不可寫的問題。

平臺簽名應用受影響

這個修改對系統應用影響較大,在 9.0 之前的平臺,申請了 WRITE_MEDIA_STORAGE 的權限后,平臺簽名的應用就可以通過 java.io.File 接口寫入外置 SD 卡了。但是這個修改之后,想要寫入外置 SD 卡,就需要像第三方應用一樣,使用 DocumentFile 的接口,可以閱讀 API 文檔 存儲訪問框架 和 使用作用域目錄訪問 。

參考 google 的這個 bug ,平臺類的應用,如文件管理器、相機、圖庫甚至 MediaProvider 都會出現外置 SD 卡只能讀不可寫,即寫入失敗的問題,因為這些系統應用都沒有適配 DocumentProvider 的寫入方式。

DocumentFile 適配方案

1. 請求寫入外置 SD 卡權限

早 在 Android 4.4,Android 就已經加入了存儲訪問框架,外置 SD 卡的訪問由 DocumentsUI (com.android.documentsui) 提供支持,經過 5.0 版本的完善以及 7.0 的改進,目前有兩種請求外置 SD 卡寫入權限的交互方法:

  • Android 7.0 之前,使用 ACTION_OPEN_DOCUMENT_TREE 跳轉到 DocumentsUI 的存儲選擇界面,之后用戶手動打開外置存儲并選擇

  • Android 7.0 及之后,使用 StorageVolume.createAccessIntent(null) 跳轉到權限寫入提示框。(這個提示框也是 DocumentsUI 提供的,只是對之前的交互做了改進,避免繁瑣的用戶操作)

檢查權限界面的屬性,會發現這個權限提示框其實是 com.android.documentsui/com.android.documentsui.ScopedAccessActivity

也就是說 DocumentsUI 為了簡化權限請求的流程,已經特意做了一個權限的提示框。

而 StorageVolume.createAccessIntent(String directoryName) 可以傳入眾多媒體類型,包括音樂、圖片、電影、文檔等,如果傳入參數為 null ,則表示整個外置存儲分區。

Parameters?
directoryNameString: must be one of Environment.DIRECTORY_MUSIC, Environment.DIRECTORY_PODCASTS, Environment.DIRECTORY_RINGTONES, Environment.DIRECTORY_ALARMS, Environment.DIRECTORY_NOTIFICATIONS, Environment.DIRECTORY_PICTURES, Environment.DIRECTORY_MOVIES, Environment.DIRECTORY_DOWNLOADS, Environment.DIRECTORY_DCIM, or Environment.DIRECTORY_DOCUMENTS, or null to request access to the entire volume.
Returns?
Intentintent to request access, or null if the requested directory is invalid for that volume.

權限請求及處理

權限請求需要在 Activity 或者 Fragment 中發起,同時在 onActivityResult 中捕獲返回的 Uri,這個 Uri 可以保存在本地存儲中,方便再次調用。請求的代碼封裝如下:

@Override public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// ...if (DocumentsUtils.checkWritableRootPath(getActivity(), rootPath)) {showOpenDocumentTree();}// ... }private void showOpenDocumentTree() {Intent intent = null;if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {StorageManager sm = getActivity().getSystemService(StorageManager.class);StorageVolume volume = sm.getStorageVolume(new File(rootPath));if (volume != null) {intent = volume.createAccessIntent(null);}}if (intent == null) {intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);}startActivityForResult(intent, DocumentsUtils.OPEN_DOCUMENT_TREE_CODE); }@Override public void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) {case DocumentsUtils.OPEN_DOCUMENT_TREE_CODE:if (data != null && data.getData() != null) {Uri uri = data.getData();DocumentsUtils.saveTreeUri(getActivity(), rootPath, uri);}break;default:break;} }

這里的 rootPath 是上下文中傳入的外置 sd 卡根目錄,如 /storage/0000-0000 這樣的路徑,可以通過 context.getExternalFilesDirs("external") 方法獲取到。DocumentsUtils 工具類的實現方法見下文。

其中 DocumentsUtils.checkWritableRootPath() 方法用來檢查 SD 卡根目錄是否有寫入權限,如果沒有則跳轉到權限請求;DocumentsUtils.saveTreeUri() 方法保存返回的 Uri 信息到本地存儲,以便之后查詢。

2. DocumentFile 文件操作封裝

由于之前應用使用了 java.io.File 接口操作外置 SD 卡文件,期望對代碼的修改量最小,則最好的方式是對已有的 File 操作再做一次封裝。

由于 Android 9.0 之前系統應用默認是可以通過 java.io.File 接口寫入外置 SD卡 的,而如果作為公開市場第三方應用卻在 4.4 之后就不可寫,而且有的廠商定制版本 Android 9.0 外置 SD 卡也是可以直接寫入而不需要 DocumentFile 接口,DocumentFile 接口也沒有 java.io.File 效率高。

所以最好的辦法是先檢查是否有文件寫入權限,如果有寫入權限,則直接使用 File 接口操作,如果沒有權限再檢查文件是否在外置 SD 卡,如果文件在 SD 卡則使用 DocumentFile 接口操作。

封裝的工具類 DocumentsUtils 方法說明,不兼容 表示沒有封裝 DocumentFile 操作:

DocumentsUtils 公共方法功能描述
void cleanCache()清除路徑緩存,建議插拔 sd 卡后調用
boolean isOnExtSdCard(File file, Context c)文件路徑是否在外置 SD 卡上
DocumentFile getDocumentFile(final File file, final boolean isDirectory, Context context)從 File 轉到 DocumentFile
boolean mkdirs(Context context, File dir)創建文件夾
boolean delete(Context context, File file)刪除文件
boolean canWrite(File file)File 文件是否可寫(如果文件不存在,則嘗試創建文件再刪除檢查寫入權限)不兼容
boolean canWrite(Context context, File file)文件是否可寫
boolean renameTo(Context context, File src, File dest)文件重命名
boolean saveTreeUri(Context context, String rootPath, Uri uri)保存 path 和 uri 到本地存儲
boolean checkWritableRootPath(Context context, String rootPath)檢查路徑是否可寫,不可寫返回 true
InputStream getInputStream(Context context, File destFile)獲取 InputStream,可用于讀操作
OutputStream getOutputStream(Context context, File destFile)獲取 OutputStream,可用于寫操作

封裝的工具類 DocumentsUtils.java 內容如下:

public class DocumentsUtils {private static final String TAG = DocumentsUtils.class.getSimpleName();public static final int OPEN_DOCUMENT_TREE_CODE = 8000;private static List<String> sExtSdCardPaths = new ArrayList<>();private DocumentsUtils() {}public static void cleanCache() {sExtSdCardPaths.clear();}/*** Get a list of external SD card paths. (Kitkat or higher.)** @return A list of external SD card paths.*/@TargetApi(Build.VERSION_CODES.KITKAT)private static String[] getExtSdCardPaths(Context context) {if (sExtSdCardPaths.size() > 0) {return sExtSdCardPaths.toArray(new String[0]);}for (File file : context.getExternalFilesDirs("external")) {if (file != null && !file.equals(context.getExternalFilesDir("external"))) {int index = file.getAbsolutePath().lastIndexOf("/Android/data");if (index < 0) {Log.w(TAG, "Unexpected external file dir: " + file.getAbsolutePath());} else {String path = file.getAbsolutePath().substring(0, index);try {path = new File(path).getCanonicalPath();} catch (IOException e) {// Keep non-canonical path.}sExtSdCardPaths.add(path);}}}if (sExtSdCardPaths.isEmpty()) sExtSdCardPaths.add("/storage/sdcard1");return sExtSdCardPaths.toArray(new String[0]);}/*** Determine the main folder of the external SD card containing the given file.** @param file the file.* @return The main folder of the external SD card containing this file, if the file is on an SD* card. Otherwise,* null is returned.*/@TargetApi(Build.VERSION_CODES.KITKAT)private static String getExtSdCardFolder(final File file, Context context) {String[] extSdPaths = getExtSdCardPaths(context);try {for (int i = 0; i < extSdPaths.length; i++) {if (file.getCanonicalPath().startsWith(extSdPaths[i])) {return extSdPaths[i];}}} catch (IOException e) {return null;}return null;}/*** Determine if a file is on external sd card. (Kitkat or higher.)** @param file The file.* @return true if on external sd card.*/@TargetApi(Build.VERSION_CODES.KITKAT)public static boolean isOnExtSdCard(final File file, Context c) {return getExtSdCardFolder(file, c) != null;}/*** Get a DocumentFile corresponding to the given file (for writing on ExtSdCard on Android 5).* If the file is not* existing, it is created.** @param file The file.* @param isDirectory flag indicating if the file should be a directory.* @return The DocumentFile*/public static DocumentFile getDocumentFile(final File file, final boolean isDirectory,Context context) {if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {return DocumentFile.fromFile(file);}String baseFolder = getExtSdCardFolder(file, context);boolean originalDirectory = false;if (baseFolder == null) {return null;}String relativePath = null;try {String fullPath = file.getCanonicalPath();if (!baseFolder.equals(fullPath)) {relativePath = fullPath.substring(baseFolder.length() + 1);} else {originalDirectory = true;}} catch (IOException e) {return null;} catch (Exception f) {originalDirectory = true;//continue}String as = PreferenceManager.getDefaultSharedPreferences(context).getString(baseFolder,null);Uri treeUri = null;if (as != null) treeUri = Uri.parse(as);if (treeUri == null) {return null;}// start with root of SD card and then parse through document tree.DocumentFile document = DocumentFile.fromTreeUri(context, treeUri);if (originalDirectory) return document;String[] parts = relativePath.split("/");for (int i = 0; i < parts.length; i++) {DocumentFile nextDocument = document.findFile(parts[i]);if (nextDocument == null) {if ((i < parts.length - 1) || isDirectory) {nextDocument = document.createDirectory(parts[i]);} else {nextDocument = document.createFile("image", parts[i]);}}document = nextDocument;}return document;}public static boolean mkdirs(Context context, File dir) {boolean res = dir.mkdirs();if (!res) {if (DocumentsUtils.isOnExtSdCard(dir, context)) {DocumentFile documentFile = DocumentsUtils.getDocumentFile(dir, true, context);res = documentFile != null && documentFile.canWrite();}}return res;}public static boolean delete(Context context, File file) {boolean ret = file.delete();if (!ret && DocumentsUtils.isOnExtSdCard(file, context)) {DocumentFile f = DocumentsUtils.getDocumentFile(file, false, context);if (f != null) {ret = f.delete();}}return ret;}public static boolean canWrite(File file) {boolean res = file.exists() && file.canWrite();if (!res && !file.exists()) {try {if (!file.isDirectory()) {res = file.createNewFile() && file.delete();} else {res = file.mkdirs() && file.delete();}} catch (IOException e) {e.printStackTrace();}}return res;}public static boolean canWrite(Context context, File file) {boolean res = canWrite(file);if (!res && DocumentsUtils.isOnExtSdCard(file, context)) {DocumentFile documentFile = DocumentsUtils.getDocumentFile(file, true, context);res = documentFile != null && documentFile.canWrite();}return res;}public static boolean renameTo(Context context, File src, File dest) {boolean res = src.renameTo(dest);if (!res && isOnExtSdCard(dest, context)) {DocumentFile srcDoc;if (isOnExtSdCard(src, context)) {srcDoc = getDocumentFile(src, false, context);} else {srcDoc = DocumentFile.fromFile(src);}DocumentFile destDoc = getDocumentFile(dest.getParentFile(), true, context);if (srcDoc != null && destDoc != null) {try {if (src.getParent().equals(dest.getParent())) {res = srcDoc.renameTo(dest.getName());} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {res = DocumentsContract.moveDocument(context.getContentResolver(),srcDoc.getUri(),srcDoc.getParentFile().getUri(),destDoc.getUri()) != null;}} catch (Exception e) {e.printStackTrace();}}}return res;}public static InputStream getInputStream(Context context, File destFile) {InputStream in = null;try {if (!canWrite(destFile) && isOnExtSdCard(destFile, context)) {DocumentFile file = DocumentsUtils.getDocumentFile(destFile, false, context);if (file != null && file.canWrite()) {in = context.getContentResolver().openInputStream(file.getUri());}} else {in = new FileInputStream(destFile);}} catch (FileNotFoundException e) {e.printStackTrace();}return in;}public static OutputStream getOutputStream(Context context, File destFile) {OutputStream out = null;try {if (!canWrite(destFile) && isOnExtSdCard(destFile, context)) {DocumentFile file = DocumentsUtils.getDocumentFile(destFile, false, context);if (file != null && file.canWrite()) {out = context.getContentResolver().openOutputStream(file.getUri());}} else {out = new FileOutputStream(destFile);}} catch (FileNotFoundException e) {e.printStackTrace();}return out;}public static boolean saveTreeUri(Context context, String rootPath, Uri uri) {DocumentFile file = DocumentFile.fromTreeUri(context, uri);if (file != null && file.canWrite()) {SharedPreferences perf = PreferenceManager.getDefaultSharedPreferences(context);perf.edit().putString(rootPath, uri.toString()).apply();return true;} else {Log.e(TAG, "no write permission: " + rootPath);}return false;}public static boolean checkWritableRootPath(Context context, String rootPath) {File root = new File(rootPath);if (!root.canWrite()) {if (DocumentsUtils.isOnExtSdCard(root, context)) {DocumentFile documentFile = DocumentsUtils.getDocumentFile(root, true, context);return documentFile == null || !documentFile.canWrite();} else {SharedPreferences perf = PreferenceManager.getDefaultSharedPreferences(context);String documentUri = perf.getString(rootPath, "");if (documentUri == null || documentUri.isEmpty()) {return true;} else {DocumentFile file = DocumentFile.fromTreeUri(context, Uri.parse(documentUri));return !(file != null && file.canWrite());}}}return false;} }

參考

Media process should run with “write” access.

[Developer Preview Android P]WRITE_MEDIA_STORAGE is not working for system apps to access the secondary storage.

AmazeFileManager/FileUtil.java

總結

以上是生活随笔為你收集整理的Android 外置 SD 卡写入权限问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品2019 | 91精品网站在线观看 | 97精品国自产拍在线观看 | 国产精品久久久久久久久久尿 | 日本在线观看中文字幕 | 黄av免费 | 亚洲精品免费播放 | 成人午夜在线电影 | 国产精品免费久久久久影院仙踪林 | 91av电影在线观看 | 成 人 黄 色视频免费播放 | 亚洲欧洲一区二区在线观看 | 欧美精品黑人性xxxx | 精品视频中文字幕 | 蜜臀av一区二区 | www.夜夜操.com| 在线观看免费成人 | 超级碰碰视频 | 精品亚洲男同gayvideo网站 | 久久激情五月激情 | 免费韩国av | 天天操人人干 | 婷婷亚洲综合五月天小说 | 91人人射| 国产不卡一 | 一区二区三区在线不卡 | 色欧美88888久久久久久影院 | 国产精品免费在线 | 亚洲人在线视频 | 91在线精品播放 | 欧美日韩不卡在线视频 | 午夜骚影| 69av网| 97视频在线免费 | 国产精品一区免费看8c0m | 免费观看一级 | 在线免费观看视频一区 | 日日摸日日添日日躁av | 国产一区二区精品在线 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 久久视频免费在线 | 99精品在线免费观看 | 久久再线视频 | 久久电影国产免费久久电影 | 久久久免费精品视频 | 五月婷婷六月丁香在线观看 | 黄污网站在线观看 | 国产九九九九九 | 亚洲国产免费看 | 中文字幕字幕中文 | 中文字幕日韩一区二区三区不卡 | 香蕉影视 | 欧美精品久久久久a | 亚洲性xxxx| 久久视频这里只有精品 | 中文字幕av在线电影 | 香蕉视频在线网站 | 精品一区 精品二区 | 91禁在线观看 | 久久人人爽人人爽人人片av软件 | 免费看毛片网站 | 国产乱对白刺激视频在线观看女王 | 免费av观看网站 | www最近高清中文国语在线观看 | 中文字幕在线观 | 91av观看 | 麻豆你懂的 | 午夜在线资源 | 91精品国产一区二区在线观看 | www.香蕉视频在线观看 | 久久国产香蕉视频 | 国产高清精 | 免费网站在线观看人 | 丝袜网站在线观看 | 国产资源在线视频 | 不卡av电影在线观看 | 在线日韩精品视频 | 中文字幕乱码亚洲精品一区 | 深夜免费福利网站 | 91热这里只有精品 | av一级一片| 久久久久久久福利 | 久久亚洲福利视频 | 波多野结衣在线中文字幕 | 中文字幕综合在线 | 国产视频在线播放 | 一区二区三区手机在线观看 | 国产精品免费在线视频 | 亚洲黄色免费网站 | 日韩欧美在线一区 | 久草剧场 | 欧美一级专区免费大片 | 香蕉视频啪啪 | 91一区啪爱嗯打偷拍欧美 | 色婷婷亚洲精品 | 日本午夜免费福利视频 | 中文免费在线观看 | 成人午夜精品久久久久久久3d | 中文字幕精品视频 | 亚洲一本视频 | 欧美韩国日本在线 | 黄色av在| 久久久国产精品免费 | 美女网站在线 | 欧美日韩在线视频观看 | 国产精品 国内视频 | 精品国产精品久久一区免费式 | 在线观看黄色免费视频 | 色99中文字幕 | 国产黄网站在线观看 | 99久久精品久久亚洲精品 | 国产成人久 | 免费在线国产 | 国产麻豆果冻传媒在线观看 | 人人讲| 日日干综合 | 日本精品久久久久久 | 午夜资源站 | 免费的黄色av | 色综合天天在线 | 黄色99视频 | 免费av大全 | 亚洲婷婷丁香 | 美女视频黄,久久 | 久久精品国产免费观看 | 中文字幕成人在线观看 | 99亚洲国产 | 91久久久久久久一区二区 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 91大神精品视频在线观看 | 天天色天天射综合网 | 国产欧美中文字幕 | 天天做天天爱夜夜爽 | 国产视频一区二区三区在线 | 91麻豆精品久久久久久 | 国产精品毛片一区二区三区 | 久久久精品高清 | 欧美午夜理伦三级在线观看 | 啪啪激情网 | 亚洲综合成人在线 | 99电影456麻豆 | 亚洲一二区精品 | 91污视频在线 | 亚洲成年人av | www.色午夜,com | 成年人免费电影 | 亚洲欧美成人综合 | 久久国产日韩 | 欧美片一区二区三区 | 亚洲精品视频免费在线观看 | 色婷在线 | 亚洲日本va在线观看 | 精品中文字幕在线 | 手机av网站 | 国产一级大片免费看 | 一级免费黄视频 | 久久精品一| 国产在线观看你懂得 | 丁香六月婷婷激情 | 日韩69av | 国产精品男女啪啪 | 在线观看成年人 | 日日夜夜人人精品 | 国产福利精品一区二区 | 色多多在线观看 | 色网站免费在线观看 | 日日狠狠 | 在线视频 区| 五月天中文字幕mv在线 | 午夜av剧场 | 91大神视频网站 | 99久久精品免费看国产 | 久久久久免费网站 | 波多野结衣久久精品 | 伊人亚洲精品 | 国产国语在线 | 久久久久久麻豆 | 九九热在线视频免费观看 | 免费黄色网址大全 | 久久久这里有精品 | 成人免费网视频 | 日韩欧美视频在线免费观看 | 精品国产伦一区二区三区观看说明 | 国产成人精品一区二区三区 | 欧美一二三视频 | 欧美日韩视频免费看 | 超碰人人干人人 | 久久精品屋 | 精品在线一区二区 | 国产91精品看黄网站在线观看动漫 | 中文字幕日韩一区二区三区不卡 | 国产精品一区二区果冻传媒 | 色在线观看网站 | 久草| 91人人在线| av免费在线看网站 | 91av中文字幕 | 中文字幕字幕中文 | 五月婷婷六月丁香在线观看 | 97超在线 | 国产在线观看xxx | 成人资源在线观看 | 欧美日韩亚洲一 | 成年人在线免费视频观看 | 亚洲黄色小说网址 | 午夜视频在线观看欧美 | 成人av片免费观看app下载 | 久久不射电影院 | 日p视频 | 中文字幕av免费观看 | 人人看人人爱 | 午夜精品久久久久久久久久久久久久 | 婷婷九月丁香 | 久久久福利视频 | 国产精品 中文在线 | 天天射天天拍 | 日日夜夜添 | 视频1区2区 | 亚洲综合日韩在线 | 久久久午夜视频 | 午夜精品视频一区二区三区在线看 | 中文字幕精品三级久久久 | av动图| 久久毛片视频 | 久久亚洲影院 | 国产在线视频资源 | 手机看片福利 | 特黄特色特刺激视频免费播放 | 人人超碰免费 | 97视频人人 | 激情开心色 | 高清av影院 | 网站你懂的 | 欧美日韩综合在线观看 | 成人免费中文字幕 | 日韩成人免费电影 | 激情视频免费在线 | 久操视频在线免费看 | 国产精品白浆视频 | 黄色成人av在线 | 成人久久久久久久久久 | 日韩有码第一页 | 日本深夜福利视频 | 人人狠狠综合久久亚洲 | 一级免费看| 国产精品免费av | 欧美精品乱码久久久久 | 国内视频一区二区 | 久久线视频 | 久久精品—区二区三区 | 日本久久久久久久久久 | 一级成人免费 | 日韩在线三级 | 亚洲欧美日韩国产 | 国产精品9区 | 91九色pron| 成人在线免费av | 97免费 | 欧美国产精品久久久久久免费 | 亚洲人成在线观看 | wwwav视频 | 麻豆精品视频在线 | 美女国产网站 | 中文字幕一区二区在线观看 | 天天插天天爱 | 狠狠色丁香久久婷婷综合丁香 | 字幕网资源站中文字幕 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国模视频一区二区 | 中文字幕久久精品一区 | 人人爱人人做人人爽 | 日本在线观看一区二区 | 99精品偷拍视频一区二区三区 | 97精品在线视频 | 99精品一区二区 | 99久久久久成人国产免费 | 91成年人在线观看 | 五月婷婷综合在线观看 | 国产成人综 | 91免费的视频在线播放 | 一级成人免费视频 | 亚洲日本va午夜在线电影 | 日韩精品一区二区在线 | 91大神视频网站 | 国产精品久久久影视 | 9ⅰ精品久久久久久久久中文字幕 | 精品国产诱惑 | 青青草国产成人99久久 | 最近中文字幕mv免费高清在线 | 久草网在线视频 | 久操视频在线观看 | 久久成人国产精品入口 | 精品亚洲午夜久久久久91 | 亚洲精品视频免费 | 国产黄色大全 | 欧美成人影音 | 国产18精品乱码免费看 | 国产色中涩 | 少妇性xxx | 伊人狠狠 | 六月激情网| 丁香五月亚洲综合在线 | 99热这里是精品 | 国产丝袜一区二区三区 | 欧美一区二区精品在线 | 久久乐九色婷婷综合色狠狠182 | 国产一级大片在线观看 | 97爱爱爱 | 欧美另类亚洲 | 精品影院一区二区久久久 | 久久99国产精品久久99 | 丁香婷婷色 | 日韩欧美99 | 亚洲天堂网在线视频观看 | 在线视频你懂得 | 久久综合久久久 | 精品国产免费人成在线观看 | 男女视频国产 | 国产亚洲午夜高清国产拍精品 | 亚洲精品乱码久久久久久久久久 | 狠狠狠色 | 国产在线精品一区二区 | aaaaaa毛片| 日韩av影视| 国产精品成人av电影 | 欧美日韩一区二区在线观看 | www.香蕉视频在线观看 | 狠狠躁18三区二区一区ai明星 | 最近2019中文免费高清视频观看www99 | 国产视频每日更新 | 中文字幕资源在线观看 | 亚洲影院色 | 午夜精品久久久久久99热明星 | 色妞色视频一区二区三区四区 | 在线岛国av | 91在线资源| 亚洲综合视频在线观看 | 久久久久久福利 | 久久久久久久久久久久影院 | 精品久久1| 不卡的av电影在线观看 | 视频在线一区 | 99精彩视频在线观看免费 | 麻豆视频大全 | av性网站| 国产一区免费在线观看 | 丁香六月天婷婷 | 手机看片 | 欧美午夜激情网 | 国产精品久久久久久久久久久不卡 | 久久视频一区二区 | 久草爱| 久久99精品国产99久久6尤 | 在线导航av| av在线免费在线 | 亚洲国产合集 | 中文字幕文字幕一区二区 | 亚洲精品一区二区在线观看 | 国产黄色免费在线观看 | 在线天堂8√ | 国产精品久久在线观看 | 日韩1级片 | 人交video另类hd | 免费精品视频在线 | 国产成人一级 | 色插综合 | 国产日韩精品在线观看 | 成人午夜精品福利免费 | 五月天综合激情网 | 欧美激情一区不卡 | 久久久久中文字幕 | 国产视频一区精品 | 国产精品永久免费观看 | 国产中的精品av小宝探花 | av在线影视 | 国产香蕉97碰碰碰视频在线观看 | 99国产精品久久久久久久久久 | 国产一级特黄毛片在线毛片 | 久久精品79国产精品 | 日韩在线精品视频 | av在线电影免费观看 | 天天草夜夜 | 日韩黄色一级电影 | 亚洲天堂网视频 | 又黄又爽免费视频 | 特级毛片在线观看 | 国内精品视频免费 | 九九交易行官网 | 亚洲电影网站 | www免费视频com━ | 激情喷水| 91成人网在线观看 | 亚洲国产日韩精品 | 中文字幕免费高清在线 | 一区二区三区在线看 | 四虎在线观看精品视频 | 日日干夜夜草 | 国产一区二区精品久久 | 超碰97人人射妻 | 亚洲资源片| 久久综合五月 | 99日精品 | 91av视频导航 | 久草在线在线精品观看 | 色操插 | 国产精品久久久久久久婷婷 | 久草在线视频首页 | 久久精品视频免费播放 | 久久人人精品 | 国产一二三四在线观看视频 | 久久午夜精品视频 | 免费在线播放av电影 | 天天干天天操天天入 | 亚洲年轻女教师毛茸茸 | 精品国产黄色片 | 欧美日韩一区久久 | 成人免费在线播放 | 婷婷激情综合网 | 日韩视频区| 亚洲精品久久久久中文字幕m男 | 欧美精品久久久久久久亚洲调教 | 黄污在线观看 | 欧美美女激情18p | 久久精品久久精品 | 国产在线成人 | 久久久影院官网 | 国内精品久久久久久 | 久久艹欧美 | 中文国产成人精品久久一 | 亚洲成人国产 | 在线观看亚洲专区 | 黄色日批网站 | 亚洲日韩精品欧美一区二区 | 国产亚洲资源 | 99成人精品| 精品国产综合区久久久久久 | 91成人精品 | 国产精品99久久久精品免费观看 | 亚洲一区 av | a天堂最新版中文在线地址 久久99久久精品国产 | av888av.com| 亚洲电影自拍 | 久久av不卡 | 亚洲国产精品va在线 | 亚洲精品裸体 | 久久一精品 | 国产精品6 | 欧美高清视频不卡网 | 99视频在线观看免费 | 中文字幕在线视频免费播放 | 国产午夜免费视频 | 国产精品久久久久久久久久久久 | 色综合天天综合网国产成人网 | 超碰在线免费福利 | 日韩高清dvd| 精品国产一区二区三区久久影院 | 精品一区二区亚洲 | 久久综合影音 | 91久久精品一区二区三区 | 日韩色中色 | 国产精品美女在线观看 | 国产日韩欧美在线一区 | 精品专区| 最近中文字幕免费大全 | 国产高清在线视频 | 免费三级影片 | 久久99精品久久只有精品 | 国产精品va在线播放 | 国产免费又黄又爽 | 午夜av不卡 | 中文字幕成人在线 | 久久99中文字幕 | 人成免费网站 | 国产精品国产三级国产不产一地 | 国产精品一区二区三区久久 | 狠狠干夜夜爱 | 成人午夜精品久久久久久久3d | 亚洲精品乱码白浆高清久久久久久 | 精品国产一区二区三区久久久蜜臀 | 久久国产精品影视 | 玖玖综合网 | 97超级碰碰| 精品福利片 | 香蕉色综合| 久久综合久久综合这里只有精品 | 美女中文字幕 | 国产精品不卡在线观看 | 91天堂在线观看 | 欧美国产不卡 | 久久国产精品99久久久久久进口 | 日本激情中文字幕 | 亚洲国产中文在线观看 | 丁香六月久久综合狠狠色 | av成人在线看 | 国产色网站 | 欧美成人精品xxx | 免费精品在线视频 | 婷婷色综合色 | 18做爰免费视频网站 | 久久er99热精品一区二区 | 中文字幕色在线 | 亚洲黄色网络 | 国产精品久久久久久久久久东京 | 91女子私密保健养生少妇 | 色狠狠操 | 激情小说网站亚洲综合网 | 激情综合五月天 | 在线看日韩 | 日韩欧美在线高清 | 天天操天天艹 | 偷拍区另类综合在线 | 日本少妇高清做爰视频 | a在线免费 | 国产成人精品国内自产拍免费看 | 超碰在线天天 | 国产精品综合av一区二区国产馆 | 91精品毛片 | 久久久久影视 | 欧美aaaxxxx做受视频 | 亚洲免费精品视频 | 日韩精品高清不卡 | 天天干com| 99九九99九九九视频精品 | wwwwww黄| 天天干天天拍天天操 | 国产乱码精品一区二区三区介绍 | 人交video另类hd | 天天久久综合 | 精品国产一区二区三区免费 | 视频国产 | av 一区二区三区 | 欧美坐爱视频 | 欧美性生活免费看 | 中文字幕在线视频国产 | 久草在线久 | 久久人人爽爽 | 深夜成人av | 久久精视频 | 热re99久久精品国产66热 | 免费观看黄色12片一级视频 | 激情五月开心 | 999在线精品| 免费国产一区二区视频 | www日韩视频| 91av蜜桃 | 欧美伊人网 | 国产福利在线免费观看 | 一区二区中文字幕在线 | av先锋中文字幕 | 国产午夜精品久久久久久久久久 | 国产麻豆剧传媒免费观看 | 91插插插免费视频 | av福利电影 | 午夜三级福利 | 国产精品高清在线 | 免费又黄又爽视频 | 特片网久久 | 国产精品午夜久久久久久99热 | 国产二区视频在线观看 | 日韩精品一区在线观看 | 天天操人人要 | 国产精品精品久久久久久 | 日韩高清精品一区二区 | 一区 在线 影院 | 在线观看免费中文字幕 | 99在线免费观看视频 | 国产午夜麻豆影院在线观看 | 久久久久在线观看 | 国产天天爽 | 久久久黄视频 | 亚洲色综合| 999成人网 | 婷婷干五月| 国产欧美在线一区二区三区 | 欧美精品久久久久久久免费 | 久热电影 | 亚洲精品在线免费播放 | 欧美日韩国产一区 | 国产黄色av影视 | 日韩av一区二区三区四区 | 天天综合色 | 欧美乱码精品一区 | 欧美一级黄色视屏 | 四虎影视成人永久免费观看亚洲欧美 | 日韩有码中文字幕在线 | 亚洲精品播放 | 激情丁香5月| 99久久婷婷国产综合亚洲 | 激情久久久久久久久久久久久久久久 | 久久久久免费精品国产小说色大师 | 天天干,夜夜爽 | 91久久精品一区二区三区 | 狠狠色伊人亚洲综合网站野外 | 狠狠伊人 | 亚洲精品网站 | 在线国产能看的 | 欧美午夜久久 | 免费观看www7722午夜电影 | 99精品免费在线观看 | 亚洲精品在线免费看 | 69亚洲精品 | 久久99久久精品国产 | 国产精品99久久久久 | 91精品老司机久久一区啪 | 在线看片a| 亚洲特级毛片 | 日韩动漫免费观看高清完整版在线观看 | 久青草国产在线 | 岛国av在线免费 | 久久久久久国产一区二区三区 | 福利二区视频 | 欧美视频日韩 | 中文字幕在线视频第一页 | 色网影音先锋 | 日韩欧美在线高清 | 亚洲免费在线观看视频 | 国产激情小视频在线观看 | 日韩精品无码一区二区三区 | 成人97人人超碰人人99 | 69xxxx欧美| 欧美一级小视频 | 久久综合免费视频影院 | 免费av网站在线 | 亚洲精品在线视频 | 中文字幕有码在线 | 五月花丁香婷婷 | 日韩毛片一区 | 97国产在线视频 | 97超碰人人模人人人爽人人爱 | 日批网站在线观看 | 婷婷伊人综合亚洲综合网 | 色婷婷a | 午夜视频福利 | 一区二区三区在线电影 | 成人在线小视频 | 国语麻豆 | 国产成人一区二区三区在线观看 | wwwww.国产| 成人av高清在线 | 国产精品视频一二三 | 亚洲精品美女久久久 | 午夜精品久久久久久中宇69 | 在线激情av电影 | 在线观看视频在线 | 日本中文在线播放 | 国产麻豆精品一区二区 | 日本视频不卡 | 婷婷六月久久 | 中文免费观看 | 欧美在线观看视频一区二区三区 | 亚洲黄色三级 | 国产99免费| 国产精品久久久久久久午夜片 | 久久一二三四 | 在线黄色av | 久久在线免费观看 | 色偷偷88欧美精品久久久 | 久久精品专区 | 日韩久久久久久久久久 | 天天色天天干天天色 | 六月丁香色婷婷 | 国产精品免费观看久久 | 成人av网址大全 | 四虎影视精品成人 | 亚洲最大成人免费网站 | 国产精品久久久久aaaa九色 | 婷婷色中文网 | 亚洲天天做 | 精品三级av | 精品久久久久亚洲 | 人人干人人干人人干 | 午夜婷婷在线观看 | 黄色亚洲免费 | 97av.com| 91看国产| 又色又爽又黄高潮的免费视频 | 国产老太婆免费交性大片 | 国产高清久久久久 | 97超碰成人在线 | 国产黄免费看 | 特级西西444www高清大视频 | 草久草久 | 久久97久久 | 久久人人爽人人爽人人片av软件 | 69国产在线观看 | 精品在线99 | 97碰碰碰| 天天射天天爱天天干 | 97综合视频 | av一级片在线观看 | 99精品国产高清在线观看 | 成人av资源网 | 九色激情网 | 波多野结衣电影一区二区 | 99精品视频网 | 97视频在线观看视频免费视频 | 久久专区| 色婷婷a | 日韩中文字幕免费视频 | 国产不卡在线视频 | 国产在线精品播放 | 国产免费成人 | 黄色软件在线观看 | 国产裸体bbb视频 | 国产美女主播精品一区二区三区 | 精品国产免费久久 | 久久免费精品一区二区三区 | 97超碰资源网 | 天天干天天操天天搞 | 不卡av免费在线观看 | 成人免费在线看片 | 涩涩色亚洲一区 | 亚洲91中文字幕无线码三区 | 国产一区二区视频在线播放 | 中文字幕av专区 | 久草a视频| 三级黄色三级 | 五月婷婷丁香六月 | 国产在线观看免费 | 综合国产视频 | 亚洲天堂网在线播放 | 日韩三级免费观看 | 色免费在线 | 欧美精品一区二区三区一线天视频 | 精品福利网 | 国产免费人成xvideos视频 | www.久久久久| 伊人久久精品久久亚洲一区 | 亚洲天堂网视频在线观看 | 日韩电影久久久 | av电影中文 | 最近更新的中文字幕 | 久久九九国产精品 | 少妇搡bbbb搡bbb搡69 | 91在线视频一区 | 亚洲jizzjizz日本少妇 | 日韩精品视频在线免费观看 | 久久午夜免费观看 | 女人高潮特级毛片 | 在线观看黄色小视频 | av一本久道久久波多野结衣 | 色多多在线观看 | 一区二区视频在线看 | 日本不卡一区二区三区在线观看 | 日本在线观看一区二区三区 | av品善网| 黄色av网站在线免费观看 | 成人在线视频网 | 最近免费中文字幕mv在线视频3 | 蜜臀av性久久久久av蜜臀三区 | 在线免费观看国产精品 | 久久免费看av | 91精品国产综合久久婷婷香蕉 | 97色婷婷| 久久狠狠一本精品综合网 | 天天弄天天操 | 久久久久色 | 最近的中文字幕大全免费版 | 精品视频久久久久久 | 在线观看成人av | 久草影视在线观看 | 日韩国产高清在线 | 999久久久久久久久6666 | 伊人久久精品久久亚洲一区 | 天天插天天干天天操 | 在线观看国产福利片 | 久久视频免费在线 | 五月婷婷,六月丁香 | 精品成人在线 | 久久天堂影院 | 国产精品黄色在线观看 | 中文字幕免费在线看 | 久久99久久99精品免观看粉嫩 | 国产日韩欧美自拍 | 国产一级电影免费观看 | 欧美一二三区在线播放 | 美女网站黄免费 | 色视频在线观看免费 | 五月天综合网站 | 免费欧美| 欧美激情第十页 | 九色琪琪久久综合网天天 | 夜色.com| 嫩草伊人久久精品少妇av | 色片网站在线观看 | 欧美一区二区三区激情视频 | 免费网站黄 | 8x成人免费视频 | 91视频 - 114av| 最新中文字幕在线观看视频 | 午夜精品一区二区三区可下载 | 欧美色图狠狠干 | 奇米影视8888 | 精品在线观看国产 | 一区二区三区免费在线播放 | 国内免费久久久久久久久久久 | 日韩理论片中文字幕 | 一区三区视频在线观看 | 久久99久久99精品免观看粉嫩 | 色综合天天狠狠 | 国产亚洲情侣一区二区无 | 九九热免费观看 | 国产一级免费观看 | 五月综合网 | 在线影院中文字幕 | 欧美a级片网站 | 91一区啪爱嗯打偷拍欧美 | 亚洲黄色免费在线 | 在线三级av | 中文字幕国产一区 | 91久久精品一区二区二区 | 国产日韩欧美在线观看视频 | 国产一区二区三区 在线 | 操操日日 | 欧美国产大片 | 国产一级片一区二区三区 | 免费看黄在线 | 少妇性aaaaaaaaa视频 | 久久久久久影视 | 国产精品久久久久高潮 | 国产91精品看黄网站在线观看动漫 | 最新国产精品久久精品 | 九色视频网址 | 黄色特级一级片 | 激情五月综合 | 在线精品视频在线观看高清 | 在线欧美中文字幕 | 97国产超碰| 日韩久久精品一区二区三区下载 | 日本精品免费看 | 97色在线观看免费视频 | 狠狠黄 | 99久久精品久久久久久清纯 | 99se视频在线观看 | 成人a视频在线观看 | 91av在线国产 | 亚洲精品国偷拍自产在线观看蜜桃 | 色综合久久88 | 色综合激情网 | 亚洲国产成人精品久久 | 久久久久久国产精品999 | 丁香色综合 | 欧美日韩免费一区二区 | 欧美一区,二区 | 日韩高清免费观看 | 国产精品久久久久久久久久久久久 | 欧美一二三视频 | 黄www在线观看 | 手机在线欧美 | 国产精品国产精品 | 国产亚洲激情视频在线 | 91资源在线免费观看 | 一区二区三区国产欧美 | 中文字幕亚洲在线观看 | 免费黄a大片 | 欧美激情综合五月色丁香 | 99草在线视频 | 人人爽人人爽人人爽人人爽 | 亚洲另类视频 | 一区二区三区中文字幕在线观看 | 97视频网址 | 久久精品永久免费 | 久久电影国产免费久久电影 | 久久av伊人 | 国产精品video爽爽爽爽 | 亚洲一级影院 | 亚洲综合精品视频 | 干干夜夜 | 国产精品久久久久婷婷 | 在线看岛国av | 欧美在线视频第一页 | 久久人人爽人人爽人人片 | 亚洲精品国产精品国自产观看浪潮 | 国产涩涩在线观看 | 天天天干天天射天天天操 | 婷婷精品国产欧美精品亚洲人人爽 | 免费视频91 | 日韩网站免费观看 | 一级一级一片免费 | 国产又黄又爽又猛视频日本 | 日本中文字幕电影在线免费观看 | 久久久久久久久久久网 | 中文字幕乱码在线播放 | 亚洲jizzjizz日本少妇 | 国产精品久久久久久久久久久久久 | 91麻豆产精品久久久久久 | 国产这里只有精品 | 最新日韩视频在线观看 | 亚洲国产播放 | 欧美一级片在线 | 久久婷婷激情 | 欧美日韩一区久久 | 久久国产精品免费一区二区三区 | 国产日韩中文字幕 | 久久久久久久99 | 日日夜夜天天干 | 黄色国产高清 | 日韩三级.com | 成人免费在线视频 | 久久看片网| 免费国产一区二区视频 | 黄色网www | 成年人看片 | 日韩免费在线视频 | 国语对白少妇爽91 | 天天操天天爱天天爽 | 99在线观看免费视频精品观看 | 久久黄色免费观看 | 欧美一级久久 | 在线色亚洲 | 一区二区三区国产欧美 | a级免费观看 | 国产尤物在线视频 | 日韩免费电影网站 | 日本mv大片欧洲mv大片 | 精品亚洲免费视频 | 精品久久电影 | 国产精品国产三级国产不产一地 | 狠狠色伊人亚洲综合成人 | 福利久久久| 成人播放器 | 国产亚洲一区二区三区 | 夜夜嗨av色一区二区不卡 | 欧美日韩性视频 | 日韩精品欧美精品 | 91精品视频免费看 | 一区二区三区 亚洲 | 久久国产精品免费视频 | 亚洲视频一级 | 国产资源精品在线观看 | 最近中文字幕在线 | 色婷婷福利视频 | 视色网站 | 日本不卡视频 | 日韩一区在线播放 | 最新久久免费视频 | 亚洲天堂色婷婷 | 国产成人一区二区在线观看 | 精品九九久久 | 日韩欧美国产免费播放 | 日韩欧美一区二区在线观看 | 日韩最新理论电影 | 天天射天天操天天干 | 国产裸体视频网站 | 中文字幕一区二区三区在线观看 | 99精品视频免费在线观看 | 日韩久久一区 | 久久综合之合合综合久久 | 国产午夜精品一区二区三区嫩草 | 国产免费久久久久 | 天天干天天玩天天操 | 久久66热这里只有精品 | 亚洲精品视频在线免费播放 | 九九九九九九精品任你躁 | 国产色一区 | 欧美成人黄色 | 激情五月综合网 | 免费在线观看av电影 | 日日摸日日 | 中文字幕免费高清在线观看 | 午夜视频亚洲 | 国产精品男女啪啪 | 日韩免费在线观看视频 | 米奇四色影视 | 999久久久欧美日韩黑人 | 黄色三级网站在线观看 | 日韩免费在线观看视频 | 一区二区 不卡 | 日本久久影视 | 亚洲片在线 | 欧美在线视频一区二区 | 亚洲一级黄色av | 激情综合网色播五月 | 波多野结衣电影一区二区 | 九九九视频精品 | 欧美日韩99 | 91久久久久久久一区二区 | 天天综合网~永久入口 | 色综合天天天天做夜夜夜夜做 | 亚洲精品午夜aaa久久久 | 人人干人人上 | 超碰在线免费97 | 亚洲免费在线播放视频 | 一区二区三区日韩视频在线观看 | 日p视频| 久草视频在线免费播放 | 亚洲久草在线 | 视频三区在线 | 伊人久操| 欧美久久影院 | 99久久精品免费看国产麻豆 | 97精产国品一二三产区在线 | 欧美日韩二三区 | 久久艹中文字幕 | 91在线产啪 | 日本性生活一级片 | 日韩欧美一区二区三区视频 | 精品国产自在精品国产精野外直播 |