国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android Uri和文件路徑互相轉(zhuǎn)換的實例代碼

2019-10-22 18:32:30
字體:
供稿:網(wǎng)友

在項目中需要用到將Uri轉(zhuǎn)換為絕對路徑,在網(wǎng)上找到一個方法,做個筆記

網(wǎng)上有不少方法,但是有的對4.4后的版本無效,這里的方法可以在4.4之后的版本將Uri轉(zhuǎn)換為絕對路徑

public class GetPathFromUri {   /**    * 專為Android4.4設(shè)計的從Uri獲取文件絕對路徑    */   public static String getPath(final Context context, final Uri uri) {     final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;     // DocumentProvider     if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {       // ExternalStorageProvider       if (isExternalStorageDocument(uri)) {         final String docId = DocumentsContract.getDocumentId(uri);         final String[] split = docId.split(":");         final String type = split[0];         if ("primary".equalsIgnoreCase(type)) {           return Environment.getExternalStorageDirectory() + "/" + split[1];         }       }       // DownloadsProvider       else if (isDownloadsDocument(uri)) {         final String id = DocumentsContract.getDocumentId(uri);         final Uri contentUri = ContentUris.withAppendedId(             Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));         return getDataColumn(context, contentUri, null, null);       }       // MediaProvider       else if (isMediaDocument(uri)) {         final String docId = DocumentsContract.getDocumentId(uri);         final String[] split = docId.split(":");         final String type = split[0];         Uri contentUri = null;         if ("image".equals(type)) {           contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;         } else if ("video".equals(type)) {           contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;         } else if ("audio".equals(type)) {           contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;         }         final String selection = "_id=?";         final String[] selectionArgs = new String[]{split[1]};         return getDataColumn(context, contentUri, selection, selectionArgs);       }     }     // MediaStore (and general)     else if ("content".equalsIgnoreCase(uri.getScheme())) {       return getDataColumn(context, uri, null, null);     }     // File     else if ("file".equalsIgnoreCase(uri.getScheme())) {       return uri.getPath();     }     return null;   }   /**    * Get the value of the data column for this Uri. This is useful for    * MediaStore Uris, and other file-based ContentProviders.    *    * @param context    The context.    * @param uri      The Uri to query.    * @param selection   (Optional) Filter used in the query.    * @param selectionArgs (Optional) Selection arguments used in the query.    * @return The value of the _data column, which is typically a file path.    */   public static String getDataColumn(Context context, Uri uri, String selection,                 String[] selectionArgs) {     Cursor cursor = null;     final String column = "_data";     final String[] projection = {column};     try {       cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,           null);       if (cursor != null && cursor.moveToFirst()) {         final int column_index = cursor.getColumnIndexOrThrow(column);         return cursor.getString(column_index);       }     } finally {       if (cursor != null)         cursor.close();     }     return null;   }   /**    * @param uri The Uri to check.    * @return Whether the Uri authority is ExternalStorageProvider.    */   public static boolean isExternalStorageDocument(Uri uri) {     return "com.android.externalstorage.documents".equals(uri.getAuthority());   }   /**    * @param uri The Uri to check.    * @return Whether the Uri authority is DownloadsProvider.    */   public static boolean isDownloadsDocument(Uri uri) {     return "com.android.providers.downloads.documents".equals(uri.getAuthority());   }   /**    * @param uri The Uri to check.    * @return Whether the Uri authority is MediaProvider.    */   public static boolean isMediaDocument(Uri uri) {     return "com.android.providers.media.documents".equals(uri.getAuthority());   } } 

絕對路徑轉(zhuǎn)Uri比較簡單

以絕對路徑創(chuàng)建一個File對象,然后調(diào)用

Uri.fromFile(file)

以上所述是小編給大家介紹的Android Uri和文件路徑互相轉(zhuǎn)換的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 定结县| 江源县| 台安县| 黔南| 叶城县| 乌兰察布市| 新郑市| 商城县| 广南县| 鄯善县| 米林县| 天柱县| 东乡县| 苍南县| 东城区| 平昌县| 黄山市| 武功县| 阿鲁科尔沁旗| 镇巴县| 昌图县| 宾阳县| 扎赉特旗| 石屏县| 巧家县| 应用必备| 桐庐县| 景德镇市| 清丰县| 裕民县| 巧家县| 湘阴县| 九台市| 贺兰县| 遂昌县| 贞丰县| 贞丰县| 梁河县| 比如县| 中宁县| 资中县|