android 解决小米手机上选择照片路径为null情况
2016-03-04 08:55
555 查看
昨天测试帅哥说他手机选择图库崩溃了,这是一个上传头像的功能,相信很多应用都有这个功能,于是我就把手机拿过来打log看了下返回的路径 为null,在网上搜索了下解决方案,现在把解决方案记录下:
这是在onActivityResult方法中执行的,
在此记录下,
这是在onActivityResult方法中执行的,
if (data == null) { return; } uri = data.getData(); uri = geturi(data);//解决方案 String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(uri, proj, null, null, null); if(cursor!=null){ int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); String path = cursor.getString(column_index);// 图片在的路径 Intent intent3 = new Intent(this, SYClipActivity.class); intent3.putExtra("path", path); startActivityForResult(intent3, IMAGE_COMPLETE); }
/** * 解决小米手机上获取图片路径为null的情况 * @param intent * @return */ public Uri geturi(android.content.Intent intent) { Uri uri = intent.getData(); String type = intent.getType(); if (uri.getScheme().equals("file") && (type.contains("image/"))) { String path = uri.getEncodedPath(); if (path != null) { path = Uri.decode(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); if (uri_temp != null) { uri = uri_temp; } } } } return uri; }
在此记录下,
相关文章推荐
- Android studio安装之前配置环境变量
- android studio使用-查看类结构及继承关系
- android学习10——对顶点着器和片段着色器的理解
- 基于RxJava、RxAndroid的EventBus实现
- android调用第三方库——第一篇 (转载)
- Android之SharedPreferences数据存储
- Android 里的 Service 复习总结 上
- Android-锁屏的应用
- AndroidStudio中如何打开hierarchyviewer
- android 图片转 Base64
- 推荐几款实用的Android Studio 插件
- Ubuntu配置连接android手机
- [FAQ08317] android apk 的root 权限和USB adb 权限的区别
- Android无法真正睡眠:服务广播插件等仍激活消耗CPU造成耗电快
- Android Emulator
- Mtk Android 打包解包*.img
- Android API教程:人脸检测(Face Detect)
- Android OpenSource Project Instruction
- Ubuntu下Android应用程序开发环境搭建
- Android应用开发记录