昨天测试帅哥说他手机选择图库崩溃了,这是一个上传头像的功能,相信很多应用都有这个功能,于是我就把手机拿过来打log看了下返回的路径 为null,在网上搜索了下解决方案,现在把解决方案记录下:

这是在onActivityResult方法中执行的,

  1. if (data == null) {
  2. return;
  3. }
  4. uri = data.getData();
  5. uri = geturi(data);//解决方案
  6. String[] proj = { MediaStore.Images.Media.DATA };
  7. Cursor cursor = managedQuery(uri, proj, null, null, null);
  8. if(cursor!=null){
  9. int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  10. cursor.moveToFirst();
  11. String path = cursor.getString(column_index);// 图片在的路径
  12. Intent intent3 = new Intent(this, SYClipActivity.class);
  13. intent3.putExtra("path", path);
  14. startActivityForResult(intent3, IMAGE_COMPLETE);
  15. }
  1. /**
  2. * 解决小米手机上获取图片路径为null的情况
  3. * @param intent
  4. * @return
  5. */
  6. public Uri geturi(android.content.Intent intent) {
  7. Uri uri = intent.getData();
  8. String type = intent.getType();
  9. if (uri.getScheme().equals("file") && (type.contains("image/"))) {
  10. String path = uri.getEncodedPath();
  11. if (path != null) {
  12. path = Uri.decode(path);
  13. ContentResolver cr = this.getContentResolver();
  14. StringBuffer buff = new StringBuffer();
  15. buff.append("(").append(Images.ImageColumns.DATA).append("=")
  16. .append("'" + path + "'").append(")");
  17. Cursor cur = cr.query(Images.Media.EXTERNAL_CONTENT_URI,
  18. new String[] { Images.ImageColumns._ID },
  19. buff.toString(), null, null);
  20. int index = 0;
  21. for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
  22. index = cur.getColumnIndex(Images.ImageColumns._ID);
  23. // set _id value
  24. index = cur.getInt(index);
  25. }
  26. if (index == 0) {
  27. // do nothing
  28. } else {
  29. Uri uri_temp = Uri
  30. .parse("content://media/external/images/media/"
  31. + index);
  32. if (uri_temp != null) {
  33. uri = uri_temp;
  34. }
  35. }
  36. }
  37. }
  38. return uri;
  39. }

在此记录下,

android 解决小米手机上选择照片路径为null情况的更多相关文章

  1. Android 解决小米手机Android Studio安装app 报错的问题It is possible that this issue is resolved by uninstalling an existi

    Android Studio升级到2.3版本之后,小米手机MIUI8不能运行Android Studio程序,报如下错误: Installation failed with message Faile ...

  2. 解决小米手机不能运行Android Studio程序的问题

    转载自:解决小米手机不能运行Android Studio程序的问题 问题描述 Android Studio升级到2.3版本之后,小米手机MIUI8不能运行Android Studio程序,报如下错误: ...

  3. 解决小米手机USB安装apk时AS报错:INSTALL_FAILED_USER_RESTRICTED

    今天,直接用AS在小米手机上运行安装的时候总是报错:INSTALL_FAILED_USER_RESTRICTED,于是乎,通过以下方式解决: 在开发者选项将USB安装打开,然后,哈,解决了.记录一下.

  4. [RN] 解决小米手机安装应用报:INSTALL_FAILED_USER_RESTRICTED问题

    解决小米手机安装应用报:INSTALL_FAILED_USER_RESTRICTED问题 https://blog.csdn.net/u013023845/article/details/821082 ...

  5. 利用exif.js解决ios手机上传竖拍照片旋转90度问题

    html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...

  6. 解决小米手机Android Studio安装app 报错的问题It is possible that this issue is resolved by uninstalling an existi

    问题描述 Android Studio升级到2.3版本之后,小米手机MIUI8不能运行Android Studio程序,报如下错误: Installation failed with message  ...

  7. 解决ios手机上传竖拍照片旋转90度问题

    html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...

  8. Android配置----小米手机通过wifi连接ADB调试Android应用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  9. Android 解决双卡双待手机解析短信异常

    开发中,难免会遇到各种各样的适配问题,尤其是经过深度修改定制过的系统,有的无论是软硬件上都有很大的区别,这里不得不提到一种奇葩的机型,没错,那就是双卡双待的手机(比如XT800, A60, S8600 ...

随机推荐

  1. 【Tomcat】部署Web到tomcat的四种方式

    一.静态部署 1.直接将web项目文件件拷贝到webapps 目录中     Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用.所以可以将JSP ...

  2. 创建一个jdbc连接

    本文介绍如何建立一个jdbc连接进行数据库查询操作. 创建一个java工程,导入jar包. 作者使用mysql数据库,建立jdbc连接需要mysql数据库驱动jar包和jdbc连接jar包. 建立jd ...

  3. 步步深入MySQL:架构->查询执行流程->SQL解析顺序!

    一.前言 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序 ...

  4. Java - equals方法

    java提高篇(十三)-----equals()方法总结 equal和==区别 ==比较对象基于内存引用,两个引用完全相同返回true Java 语言里的 equals方法其实是交给开发者去覆写的,让 ...

  5. org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException Line 47 in

    org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 47 in XML document from ...

  6. Console控制台的正确打开方式

    Console控制台的正确打开方式 console对象提供了访问浏览器调试模式的信息到控制台 -- Console对象 |-- assert() 如果第一个参数断言为false,则在控制台输出错误信息 ...

  7. ArcGIS三种方式打断相交线------Planarize Lines工具

    1. 只有一个layer图层时,我们只需要选择”Planarize Lines“工具即可. (1)选择工具栏”Customize“选项: (2)选择Customize工具栏中的”Toolbars“选项 ...

  8. SQLite 数据库增删改查

    布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  9. Android之在linux终端执行shell脚本直接打印当前运行app的日志

    1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 a ...

  10. 【Redis】Redis学习(四) Redis Sentinel模式详解

    主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel应运而生. Redis Sentinel是Redis官方提供的集群管理工具,主要有三大 ...