Android功能集锦(2017.8)
来源:互联网 发布:网络协议 编辑:程序博客网 时间:2024/05/16 17:18
1.通过Uri获取文件完整路径
/** * 获取Uri对应的文件的路径。 4.4之后需增加权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> */ public static String getPath(Context context, Uri uri) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && DocumentsContract.isDocumentUri(context, uri)) { // 【DocumentProvider】 if (isExternalStorageDocument(uri)) { // 【ExternalStorageProvider】 String docId = DocumentsContract.getDocumentId(uri); String[] split = docId.split(":"); String type = split[0];// if ("primary".equalsIgnoreCase(type)) return Environment.getExternalStorageDirectory() + "/" + split[1]; } else if (isDownloadsDocument(uri)) { // 【DownloadsProvider】 String id = DocumentsContract.getDocumentId(uri); Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); return getDataColumn(context, contentUri, null, null); } else if (isMediaDocument(uri)) { // 【MediaProvider】 String docId = DocumentsContract.getDocumentId(uri); String[] split = docId.split(":"); 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; String selection = "_id=?"; String[] selectionArgs = new String[]{split[1]}; return getDataColumn(context, contentUri, selection, selectionArgs); } } else if ("content".equalsIgnoreCase(uri.getScheme())) { // 【MediaStore (and general)】 return getDataColumn(context, uri, null, null); } else if ("file".equalsIgnoreCase(uri.getScheme())) { // 【File】 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; String column = "_data"; String[] projection = {column}; try { cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); if (cursor != null && cursor.moveToFirst()) { 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()); }
阅读全文
0 0
- Android功能集锦(2017.8)
- Android 功能集锦(2017.3)
- Android 功能集锦(2017.7)
- 【Android】项目常用功能集锦(一)
- 3.Swift 功能集锦(一)
- 功能代码实现集锦(一)
- Android-----WebView使用 (集锦)
- Android问题集锦(1)
- Android Questions (问题集锦)
- Oracle常用功能集锦
- Oracle常用功能集锦
- Oracle常用功能集锦
- javascript功能函数集锦
- ORACLE常用功能集锦
- Linux常用功能集锦
- win10功能集锦
- Qt学习之旅----功能函数集锦(一)
- android模拟器安装及优化(集锦)
- java代码注释规范
- gym 101492 A. Comunicating the Tibet(dfs遍历无向图)
- JavaScript中浏览器打开或下载app
- android中xml tools属性详解
- CSS3盒子模型
- Android功能集锦(2017.8)
- 1、Two Sum
- Docker总结(二)
- 找出1000以内的完数,并且按照一定的格式输出
- 表演艺术
- android多cpu架构适配开篇
- python+正则表达式提取“参考文献”中的作者名,发表日期等信息
- 小白随记【1】
- 实体类JavaBean转Xml-JAXB的使用分享