/**

* 通过Uri返回File文件

* 注意:通过相机的是类似content://media/external/images/media/97596

* 通过相册选择的:file:///storage/sdcard0/DCIM/Camera/IMG_20150423_161955.jpg

* 通过查询获取实际的地址

* @param uri

* @return

*/

public File getFileByUri(Uri uri) {

String path = null;

if ("file".equals(uri.getScheme())) {

path = uri.getEncodedPath();

if (path != null) {

path = Uri.decode(path);

ContentResolver cr = activity.getContentResolver();

StringBuffer buff = new StringBuffer();

buff.append("(").append(Images.ImageColumns.DATA).append("=").append("'" + path + "'").append(")");

Cursor cur = cr.query(Images.Media.EXTERNAL_CONTENT_URI, new String[] { Images.ImageColumns._ID, Images.ImageColumns.DATA }, buff.toString(), null, null);

int index = 0;

int dataIdx = 0;

for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {

index = cur.getColumnIndex(Images.ImageColumns._ID);

index = cur.getInt(index);

dataIdx = cur.getColumnIndex(Images.ImageColumns.DATA);

path = cur.getString(dataIdx);

}

cur.close();

if (index == 0) {

} else {

Uri u = Uri.parse("content://media/external/images/media/" + index);

System.out.println("temp uri is :" + u);

}

}

if (path != null) {

return new File(path);

}

} else if ("content".equals(uri.getScheme())) {

// 4.2.2以后

String[] proj = { MediaStore.Images.Media.DATA };

Cursor cursor = activity.getContentResolver().query(uri, proj, null, null, null);

if (cursor.moveToFirst()) {

int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

path = cursor.getString(columnIndex);

}

cursor.close();

return new File(path);

} else {

Log.i(TAG, "Uri Scheme:" + uri.getScheme());

}

return null;

}

android通过uri得到文件对象,安卓[android] 通过Uri获取File文件相关推荐

  1. 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )

    文章目录 一.创建 XmlParser 解析器 二.获取 Xml 文件中的节点 三.获取 Xml 文件中的节点属性 四.完整代码示例 一.创建 XmlParser 解析器 创建 XmlParser 解 ...

  2. iphone 传android,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...

    一直以来,很多的app都是分为安卓和IOS两个版本,在使用上,两个平台之间很多功能都不能跨平台使用.比如大家在玩游戏时充值的东西,在苹果充值之后,同一个账号转到安卓手机上玩,那些东西都是不能迁移进来的 ...

  3. iphone android互传文件夹,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...

    一直以来,很多的app都是分为安卓和IOS两个版本,在使用上,两个平台之间很多功能都不能跨平台使用.比如大家在玩游戏时充值的东西,在苹果充值之后,同一个账号转到安卓手机上玩,那些东西都是不能迁移进来的 ...

  4. android 解析midi文件,基于安卓的乐音识别及MIDI文件输出的研究和实现

    基于安卓的乐音识别及MIDI文件输出的研究和实现 语音识别技术已经取得了不少进步,比如人们可以和Siri在苹果手机上对话了.另一个技术相关领域也有进展,乐音跟踪识别,比如微信可以摇一摇搜歌,手机根据& ...

  5. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /*** 短信的业务bean* @author Administrator ...

  6. android os能删掉那,安卓手机里的那些英文文件夹到底都是啥?可不可以删除?...

    原标题:安卓手机里的那些英文文件夹到底都是啥?可不可以删除? 对于使用安卓手机的强迫症患者来说,文件夹必须经常清理,尽管里面没有任何东西,也必须要彻底删除.虽然强迫症治好了,但总会不小心误删一些重要的 ...

  7. 双鱼林 android 服务器,双鱼林安卓Android代码生成器下载_双鱼林安卓Android代码生成器官方下载-太平洋下载中心...

    双鱼林安卓Android 代码生成器是一款生成安卓手机程序的代码生成器 基于分层模式设计思想,生成的代码直接导入Ecli PSe软件就可以用的!真正面向对象设计:系统的整体设计,提供通过使用面向对象的 ...

  8. android studio 课程表,基于课程表的安卓Android手机控制APP设计(AndroidStudio,SQLite)(含录像)...

    基于课程表的安卓Android手机控制APP设计(AndroidStudio,SQLite)(含录像)(毕业论文12000字,程序代码) 摘 要 随着IT技术的发展,以前老套的课程表内容查询管理方式已 ...

  9. 手机中geetest是什么文件_安卓手机里这些全英文件夹,到底是什么?删了它,手机瞬间多了5个G...

    关注"践行者鱼嫩子","置顶公众号",点击"查看历史消息 ",这样您就可以每天继续免费收到文章了.点击 ",会有更多精彩呈现.每天 ...

最新文章

  1. linux内核功能有,好消息!LINUX内核2.6.18终于支持实时功能了
  2. Android之Android:layout_weight详解
  3. Win7输入法消失和不能切换的办法了
  4. alipay html5 app,H5App支付宝开发详解
  5. canvas 图片反色
  6. 101次从入门到放弃,终于找到一个数据分析利器!
  7. xss攻击突破转义_每个人都应该了解的7种xss漏洞
  8. 【movable-area、movable-view】 可移动区域组件说明
  9. JS学习(this关键字)
  10. 3.6 tensorflow 中LSTM和GRU模块使用意境级讲解
  11. 01-【分析】神策系统的拆解与分析
  12. Oracle 锁表问题查询处理
  13. 小米手机只能进fastboot怎么办?
  14. Unity 之 ShaderGraph 实现火焰效果入门级教程
  15. PCL学习(四)点云转换为网格
  16. 巴比特 | 元宇宙每日必读:入职三个月就遭遣散,热潮过后的元宇宙会走向哪里?...
  17. 吴忠军 - 养生之道 老人健康长寿的大秘诀
  18. 调试心得plc做主站(客户端)
  19. excel文件不能编辑怎么回事?
  20. 53. 验证外星语词典

热门文章

  1. 什么是三极管的倒置状态及其作用!
  2. chrome浏览器极简插件大全
  3. 语音变音调和加速减速
  4. JavaWeb系列之:Servlet
  5. Mongodb 副本集+分片集群搭建
  6. 程序员的量化交易(34)--QuantConnect_Lean如何定义Indicator指标2
  7. 管理表空间和数据文件——使用OMF方式管理表空间
  8. IPad开发之有帮助的开发工具
  9. Linux上常用的安全技术iptables与squid代理服务器
  10. 关于使用Windows Live Writer