Android中Uri和Path之间的转换

2017-12-24 12:04:40

今天选择,剪裁,上传图片,用到了Uri。出现了错误。

原来Uri分好多种。

今天知道了就两种,

Media Uri

File Uri 



1. 从URI中获取真实文件路径

[java] view plain copy

  1. private String uriToRealPath(Uri uri) {  

  2.     Cursor cursor = managedQuery(uri,  

  3.             new String[] {MediaStore.Images.Media.DATA},  

  4.             null,  

  5.             null,  

  6.             null);  

  7.     cursor.moveToFirst();  

  8.     String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));  

  9.     return path;  

  10. }  


2. 从真实路径转换为文件URI


[java] view plain copy

  1. Uri uri = Uri.fromFile(new File(filePath));  


3. 从真实路径转换为媒体库URI


[java] view plain copy

  1. private Uri pathToMediaUri(String path) {  

  2.     Uri mediaUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;  

  3.       

  4.     Cursor cursor = getContentResolver().query(mediaUri,  

  5.             null,  

  6.             MediaStore.Images.Media.DISPLAY_NAME + "=" + path.substring(path.lastIndexOf("/") + 1),  

  7.             null,  

  8.             null);  

  9.     cursor.moveToFirst();  

  10.       

  11.     Uri uri = ContentUris.withAppendedId(mediaUri, cursor.getLong(0));  

  12.     return uri;  

  13. }  

  PS: 如果想调用"com.android.camera.action.CROP"裁剪图片,文件URI是用不了的,必须要获取媒体库的URI。


  • 2019-06-06 17:57:57

    input【type="checkbox"】标签与字体对齐

    今天分享一个比较实用的技巧,在实际项目中我们会经常遇到表单的input标签多选和单选的问题,但是往往由于标签自身的样式和我们项目的风格很不搭调,就不能实现了,今天就来告诉大家怎么去实现吧。

  • 2019-06-10 11:54:52

    html.div禁用点击事件

    今天做项目中偶然误把元素加上了pointer-events属性,结果导致后来在js中给该元素加点击事件不能用,检查了半天才发现是这个属性的问题。之前没有好好研究,于是决定仔细研究一下。

  • 2019-06-12 22:34:16

    PHP身份证号打星号

    一个很简单的问题,想把身份证的号生日的4位隐藏,一开始查函数居然没有看到,然后用了好几个函数处理,觉得太麻烦就上网搜,后来发现有一个函数就能直接处理,我居然没看到~~初学者~~

  • 2019-06-13 10:09:51

    java(Android)跨Module调用对应类方法需求解决方案

    在开发组件化项目中,遇到一个这样的问题,两个不同的Module相互之间没有任何直接依赖关系,现在需求是需要在Module_A中调用Module_B中的某个类的方法,以下为解决此问题的方法;

  • 2019-06-13 11:31:32

    Android Studio接入ARouter以及简单使用

    你可能会说如果我的A module依赖了 B module,那么只要在B里面配置是不是就可以了?绝对不行!无论module之间关系如何,必须要同样配置!包括主项目和library项目!

  • 2019-06-13 11:34:24

    Android组件化方案

    1为什么要项目组件化 2如何组件化 3组件化实施流程