android通过uri得到文件对象,安卓[android] 通过Uri获取File文件
/**
* 通过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文件相关推荐
- 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )
文章目录 一.创建 XmlParser 解析器 二.获取 Xml 文件中的节点 三.获取 Xml 文件中的节点属性 四.完整代码示例 一.创建 XmlParser 解析器 创建 XmlParser 解 ...
- iphone 传android,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...
一直以来,很多的app都是分为安卓和IOS两个版本,在使用上,两个平台之间很多功能都不能跨平台使用.比如大家在玩游戏时充值的东西,在苹果充值之后,同一个账号转到安卓手机上玩,那些东西都是不能迁移进来的 ...
- iphone android互传文件夹,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...
一直以来,很多的app都是分为安卓和IOS两个版本,在使用上,两个平台之间很多功能都不能跨平台使用.比如大家在玩游戏时充值的东西,在苹果充值之后,同一个账号转到安卓手机上玩,那些东西都是不能迁移进来的 ...
- android 解析midi文件,基于安卓的乐音识别及MIDI文件输出的研究和实现
基于安卓的乐音识别及MIDI文件输出的研究和实现 语音识别技术已经取得了不少进步,比如人们可以和Siri在苹果手机上对话了.另一个技术相关领域也有进展,乐音跟踪识别,比如微信可以摇一摇搜歌,手机根据& ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /*** 短信的业务bean* @author Administrator ...
- android os能删掉那,安卓手机里的那些英文文件夹到底都是啥?可不可以删除?...
原标题:安卓手机里的那些英文文件夹到底都是啥?可不可以删除? 对于使用安卓手机的强迫症患者来说,文件夹必须经常清理,尽管里面没有任何东西,也必须要彻底删除.虽然强迫症治好了,但总会不小心误删一些重要的 ...
- 双鱼林 android 服务器,双鱼林安卓Android代码生成器下载_双鱼林安卓Android代码生成器官方下载-太平洋下载中心...
双鱼林安卓Android 代码生成器是一款生成安卓手机程序的代码生成器 基于分层模式设计思想,生成的代码直接导入Ecli PSe软件就可以用的!真正面向对象设计:系统的整体设计,提供通过使用面向对象的 ...
- android studio 课程表,基于课程表的安卓Android手机控制APP设计(AndroidStudio,SQLite)(含录像)...
基于课程表的安卓Android手机控制APP设计(AndroidStudio,SQLite)(含录像)(毕业论文12000字,程序代码) 摘 要 随着IT技术的发展,以前老套的课程表内容查询管理方式已 ...
- 手机中geetest是什么文件_安卓手机里这些全英文件夹,到底是什么?删了它,手机瞬间多了5个G...
关注"践行者鱼嫩子","置顶公众号",点击"查看历史消息 ",这样您就可以每天继续免费收到文章了.点击 ",会有更多精彩呈现.每天 ...
最新文章
- Cloudera Manager5安装总结遇到问题及解决办法
- 遇到奇怪的C#/C/C++或者Java的bug可以去问问Coverity
- 解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题
- 完整mes代码(含客户端和server端_200行代码实现基于paxos的kv存储
- 【Java6】Date类/Calendar类,System类/Math类,包装类,集合,泛型,内部类
- Java Web项目,Android和微信小程序的初始页面配置
- matlab变量由非标量,matlab中的if语句
- mysql存储过程in_在MySQL存储过程中使用WHERE IN()
- 蓝桥杯 ALGO-29 算法训练 校门外的树(区间处理)
- php数组去重复数据的小例子
- linux常用命令之文件管理
- scala中的filter函数
- ZC_汇编指令_cmp
- 3. 请列举java ee的主要新特性_JavaEE考试题
- 初中生学计算机应用有什么好方面,计算机有哪些专业 初中毕业学习相关专业有发展吗...
- 全民社会保障月供制度的客观理由
- 企业微信爆粉方式有哪些
- 腾讯首次攻破屏下指纹识别技术;苹果新Mac Pro最贵将卖到4.2万;Haxe 4.0发布 | 极客头条...
- python算法习题(一): 排列组合
- 我用AI技术修万里长城