Android获取图片的路径方法总结
2016-03-15 17:15
483 查看
android系统通过图片绝对路径获取URI的两种方法。
1.将所有的图片路径取出,遍历比较找到需要的路径,取出URI,效率较低
其中 MediaStore.MediaColumns.DATA 字段存的就是图片的绝对路径,
最后mImageUri得到的就是图片的URI
2.直接从媒体数据库根据字段取出相应的记录,效率较高
1.将所有的图片路径取出,遍历比较找到需要的路径,取出URI,效率较低
其中 MediaStore.MediaColumns.DATA 字段存的就是图片的绝对路径,
最后mImageUri得到的就是图片的URI
Uri mUri = Uri.parse("content://media/external/images/media"); Uri mImageUri = null; Cursor cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Images.Media.DEFAULT_SORT_ORDER); cursor.moveToFirst(); while (!cursor.isAfterLast()) { String data = cursor.getString(cursor .getColumnIndex(MediaStore.MediaColumns.DATA)); if (picPath.equals(data)) { int ringtoneID = cursor.getInt(cursor .getColumnIndex(MediaStore.MediaColumns._ID)); mImageUri = Uri.withAppendedPath(mUri, "" + ringtoneID); break; } cursor.moveToNext(); }
2.直接从媒体数据库根据字段取出相应的记录,效率较高
String type = Utils.ensureNotNull(intent.getType()); Log.d(TAG, "uri is " + uri); if (uri.getScheme().equals("file") && (type.contains("image/"))) { String path = uri.getEncodedPath(); Log.d(TAG, "path1 is " + path); if (path != null) { path = Uri.decode(path); Log.d(TAG, "path2 is " + path); ContentResolver cr = this.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 }, buff.toString(), null, null); int index = 0; for (cur.moveToFirst(); !cur.isAfterLast(); cur .moveToNext()) { index = cur.getColumnIndex(Images.ImageColumns._ID); // set _id value index = cur.getInt(index); } if (index == 0) { //do nothing } else { Uri uri_temp = Uri .parse("content://media/external/images/media/" + index); Log.d(TAG, "uri_temp is " + uri_temp); if (uri_temp != null) { uri = uri_temp; } } } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories