Android中Uri和Path之间的转换
原因
调用系统拍照应用,拍照后要保存图片,那么我们需要指定一个存储图片路径的Uri。这就涉及到如何将file path转换为Uri。有时候我们还需要根据照片的路径得到照片的media Uri,那么又该如何转换呢?
Android Uri to Path
现在遇到的常规Uri有两种:
媒体文件的Uri是content://, 表示这是一个数据库数据。去数据库查询正常返回。
其他的文件Uri是file://, 表示这个是一个文件。这个uri是通过Uri.fromFile(File file)方法生成。
Media Uri To Path
在我简书中有一篇文章Android Uri to Path当中介绍了如何把从相册返回的Uri转换为Media Uri,然后再通过获得的Media Uri获取图片的Path。最终通过BitmapFractory创建相应的Bitmap对象。
File Uri To Path
这个转换相对比较简单,我们可以直接利用Android SDK提供的Uri.getPath()方法来获取相应的路径,然后利用Java IO来获取输入流,创建Bitmap。如果想直接通过File Uri获取输入流,我们可以通过调用ContentResolves.openInputStream(Uri uri)返回得到输入流。
bitmap = BitmapFactory.decodeStream(
getContentResolver().openInputStream(
GetImageUri.getImageStreamFromExternal("Screenshots/Screenshot.png"))
);
这里的GetImageUri.ge