在开发中我们需要获取手机上的图片信息, 系统提供的有时候是一个可以访问展示的uri地址,但是当我们需要对图片进行一定的操作时比如 删除。这个时候去删除是无法操作的,因为系统提供的地址并不是对应图片在手机中的真实文件路径。所以需要对uri进行一定的转换。

    /*** 根据图片的Uri获取图片的绝对路径(已经适配多种API)* @return 如果Uri对应的图片存在,那么返回该图片的绝对路径,否则返回null*/public static String getRealPathFromUri(Context context, Uri uri) {int sdkVersion = Build.VERSION.SDK_INT;if (sdkVersion < 11) {// SDK < Api11return getRealPathFromUri_BelowApi11(context, uri);}if (sdkVersion < 19) {// SDK > 11 && SDK < 19return getRealPathFromUri_Api11To18(context, uri);}// SDK > 19return getRealFilePath(context, uri);}/*** 适配api11-api18,根据uri获取图片的绝对路径*/private static String getRealPathFromUri_Api11To18(Context context, Uri uri) {String filePath = null;String[] projection = { MediaStore.Images.Media.DATA};CursorLoader loader = new CursorLoader(context, uri, projection, null,null, null);Cursor cursor = loader.loadInBackground();if (cursor != null) {cursor.moveToFirst();filePath = cursor.getString(cursor.getColumnIndex(projection[0]));cursor.close();}return filePath;}/*** 适配api11以下(不包括api11),根据uri获取图片的绝对路径*/private static String getRealPathFromUri_BelowApi11(Context context, Uri uri) {String filePath = null;String[] projection = { MediaStore.Images.Media.DATA };Cursor cursor = context.getContentResolver().query(uri, projection,null, null, null);if (cursor != null) {cursor.moveToFirst();filePath = cursor.getString(cursor.getColumnIndex(projection[0]));cursor.close();}return filePath;}/*** @param context* @param uri* @return 文件绝对路径或者null*/private static String getRealFilePath( final Context context, final Uri uri ) {if ( null == uri ) return null;final String scheme = uri.getScheme();String data = null;if ( scheme == null )data = uri.getPath();else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {data = uri.getPath();} else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {Cursor cursor = context.getContentResolver().query( uri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null );if ( null != cursor ) {if ( cursor.moveToFirst() ) {int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA );if ( index > -1 ) {data = cursor.getString( index );}}cursor.close();}}return data;}

android 获取图片的真实地址相关推荐

  1. php拍照从手机相册中选择,Android获取图片:拍照和从相册中选择

    概述 在Android开发中获取图片主要包括如下两种方式: 打开相机拍照 从图库中选择图片 一.打开相机拍照 打开相机拍照主要包括如下几个部分: 权限申请 打开摄像头 拍照后传回数据处理 1. 权限申 ...

  2. android 图片拍照,Android获取图片拍照时间

    为什么写这篇文章是因为今早有个需求需要获取图片拍照时的时间进行一些处理,有些方法参数名忘记了,所以谷歌百度了一下,Android 图片 时间,Android 图片 拍照 时间,这几个关键字居然无法搜索 ...

  3. Android 获取图片尺寸大小的方法

    一.获取图片大小有两张情况代码如下: package com.jhq.picdemo;import android.Manifest; import android.content.pm.Packag ...

  4. android获取图片缩略图,Android系获取图片和视频的缩略图

    获取手机里视频缩略图: public static Bitmap getVideoThumbnail(ContentResolver cr,Uri uri) { Bitmap bitmap = nul ...

  5. android 获取图片

    Android获取手机或者内存卡里面的图片有两种方式 1.这是通过一种action Intent intent=new Intent();intent.setAction(Intent.ACTION_ ...

  6. android 获取图片上某一个文字位置_android 获取手机中的所有图片或某一目录下的图片方法...

    获取手机中的所有图片,并过滤获取某一目录下的图片.(注释掉的代码可以按照目录分组) private void getAllPhotoInfo() { new Thread(new Runnable() ...

  7. android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法

    本文实例讲述了Android编程获取设备MAC地址的实现方法.分享给大家供大家参考,具体如下: /** * 获取设备的mac地址 * * @param ac * @param callback * 成 ...

  8. php获取视频的真实地址,PHP获取youku视频真实flv文件地址的方法,

    PHP获取youku视频真实flv文件地址的方法, 本文实例讲述了PHP获取youku视频真实flv文件地址的方法.分享给大家供大家参考.具体分析如下: 有一站长要我帮助它做一个可以自动测试出youk ...

  9. android获取图片背景色,android案例--图片取色并让图片融入背景色

    需求背景分析: 产品和美工给了个根据专辑封面取主题色做背景,并且专辑封面还要融入背景的效果图,一开始看到取色觉得简单啊,不就是之前看过的palette嘛,可是专辑封面渐变消失融入背景怎么做呢,我们一步 ...

最新文章

  1. 1.1.3 性能指标-速率 带宽 吞吐量
  2. Linux_RHEL7_YUM
  3. mysql -h139.129.205.80 -p test_db_dzpk db.dump
  4. 廊田镇楼下村定点帮扶-农业大健康·李喜贵:功能性农业深加工
  5. 站点安全预警,建议大家多重禁止load_file函数!
  6. ai保存web格式没有html,存储技巧,讲解AI存储为WEB所用格式的一些知识
  7. 计算机网络tcp三次握手,快速掌握_计算机网络_TCP_三次握手
  8. 泛型系列3:获取泛型的类型
  9. Vue-CLI 3.x 自动部署项目至服务器
  10. ASP.NET MVC3 系列教程 - 如何使项目Debug进MVC3源代码
  11. 最适合写python程序的软件
  12. 精心收集17套电子课件
  13. SPECT/PECT成像原理
  14. U-GAT-IT:基于GAN的新型无监督图像转换
  15. matlab绘制香农定理曲线,基于matla对香农公式仿真.doc
  16. 【二分答案】JZOJ_3337 wyl8899的TLE
  17. 一分钟整明白web前端和Java后端的就业前景
  18. [微信聊天]--一个人有多成熟,就看他如何聊微信
  19. appium连接mumu模拟器,无法连接问题
  20. Elasticsearch 第二天

热门文章

  1. Spring5:p命名和c命名空间注入
  2. Linux 合并多个文件
  3. 如何基于HTTP设计一个加密解密系统
  4. 验证码_python
  5. 春招必看一位老学长的真实互联网校招求职心路历程~
  6. 滑铁卢大学计算机学什么,为什么来滑铁卢大学学习数学和计算机
  7. iPhone 14 Pro/Max出大问题:从旧款机型传输数据后卡死黑屏无法开机!
  8. 微型计算机原理中BX是什么,微型计算机原理第7章答案
  9. java毕业生设计车辆调度管理系统计算机源码+系统+mysql+调试部署+lw
  10. PHP画a梦,分享html打造动画哆啦A梦的示例代码