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-12-19 16:44:01

    根据条件配置多个npm仓库

    scope 是一种很好的包管理方式。统一的“命名空间”,清晰、好辨识;在 registry 中使用统一的 organization 管理,不必担心命名冲突和冒用等。 在实际使用中,一个常见的场景是公司的私有仓库。使用统一的 scope 定义在私有仓库中定义私有包,绝对是一个非常好的方式。 指定 scope 从指定仓库安装

  • 2019-12-20 13:24:58

    瓦片地图生成使用以及原理

    我们都知道地球是圆的,电脑显示器是平的,要想让位于球面的形状显示在平面的显示器上就必然需要一个转换过程,这个过程就叫做投影(Projection)。在地球上我们通过经纬度来描述某个位置,而经过投影之后的地图也有自己的坐标系统,本篇文章就来详细介绍在百度地图API中涉及的各种坐标体系。

  • 2019-12-20 13:27:16

    腾讯地图谷歌和高德地图等自定义地图区别

    腾讯、百度、Google的地图投影均采用Web Mercator 投影坐标系;腾讯与Google的地图瓦片分辨率及切片范围是完全相同的,仅仅是命名规则稍有不同,这就使得同一位置和缩放级别的地图瓦片是完全可以重叠的;而百度地图每个缩放级别分辨率与前两者均不相同,而且地图瓦片的坐标原点做了一定的偏移,导致百度地图与前两者的瓦片是无法重叠的,这是因为百度在GCJ-02的基础上又进行了加密处理,形成了百度独有的BD-09坐标系。

  • 2019-12-22 08:06:48

    如何快速撤销上一次的commit

    在平时工作中使用git难免会提交一些错误的文件到git库里,这时候,撤销吧,怕把正确的文件删除了,不撤销重新改又很麻烦,下面,我就从提交的三个阶段,来讲解如何撤销错误的操作。

  • 2019-12-23 14:54:03

    RPC, REST ,GraphQL区别比较优劣

    其实在使用和学习的过程中,有很多文章都对比过它们的异同,但是大部分文章并没有从一个相对客观的角度来对比,更多是为了突显一个的优点而刻意指出另外一个的缺点。这让我想到一句话,脱离业务情景谈技术就是耍流氓。