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

首頁 > 系統 > Android > 正文

Android Uri和文件路徑互相轉換的實例代碼

2019-12-12 02:29:51
字體:
來源:轉載
供稿:網友

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

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

public class GetPathFromUri {   /**    * 專為Android4.4設計的從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());   } } 

絕對路徑轉Uri比較簡單

以絕對路徑創建一個File對象,然后調用

Uri.fromFile(file)

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闸北区| 建始县| 双柏县| 平和县| 印江| 日喀则市| 博客| 曲周县| 安吉县| 平阴县| 和平区| 河源市| 固安县| 南陵县| 永修县| 中卫市| 遂宁市| 陕西省| 庆元县| 罗田县| 塔河县| 汪清县| 桦川县| 靖江市| 周至县| 宁津县| 临沧市| 绥江县| 永善县| 呼玛县| 商南县| 榆树市| 内乡县| 汉川市| 资溪县| 长沙市| 沽源县| 柳林县| 乌审旗| 东乡族自治县| 鄂托克前旗|