Android手机图片上传 选择不了本地照片 解决方案

原创 2016年08月31日 15:58:41

问题描述:在实现Android端向服务器上传图片过程中,本人采用的是Android4.4版本,最初选择图片的代码是这样写的:

//        Intent intent = new Intent();
//        intent.setType("image/*");
//        intent.setAction(Intent.ACTION_GET_CONTENT);
//        startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);


调用方法为:

private void doPhoto(int requestCode,Intent data)
    {
        if(requestCode == SELECT_PIC_BY_PICK_PHOTO )  //从相册取图片,有些手机有异常情况,请注意
        {
            if(data == null)
            {
                Toast.makeText(this, "请选择本地相册照片", Toast.LENGTH_LONG).show();
                return;
            }
            photoUri = data.getData();
            
            if(photoUri == null )
            {
                Toast.makeText(this, "请选择本地相册照片", Toast.LENGTH_LONG).show();
                return;
            }
        }
        String[] pojo = {MediaStore.Images.Media.DATA};
        Cursor cursor = managedQuery(photoUri, pojo, null, null,null);   
        if(cursor != null )
        {
            int columnIndex = cursor.getColumnIndexOrThrow(pojo[0]);
            cursor.moveToFirst();
            picPath = cursor.getString(columnIndex);
            cursor.close();
        }
        Log.i(TAG, "imagePath = "+picPath);
        if(picPath != null && ( picPath.endsWith(".png") || picPath.endsWith(".PNG")|| picPath.endsWith(".jpeg") ||picPath.endsWith(".jpg") ||picPath.endsWith(".JPG")||picPath.endsWith(".gif")||picPath.endsWith(".bmp")
                ||picPath.endsWith(".tiff")))
        {
            lastIntent.putExtra(KEY_PHOTO_PATH, picPath);
            setResult(Activity.RESULT_OK, lastIntent);
            finish();
        }else{
            Toast.makeText(this, "请选择本地相册照片", Toast.LENGTH_LONG).show();
        }
    }

结果发现无法选中本地手机的图片。后查阅之后了解到,Android4.4与之前版本是有差别的。


解决方案:

所以选择图片部分可以这样写:

Intent intent;
        intent = new Intent(
                            Intent.ACTION_PICK,
                            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);


调用方法不变。问题就得到了解决。本人Android菜鸟一枚,遇到问题便记录下来,希望对各位有所帮助。

相关文章推荐

Android上传图片之调用系统拍照和从相册选择图片

现在几乎应用都会用到上传图片的功能,而要上传图片,首先得选择图片,本文不针对如何上传图片到服务器(每个项目与服务器交互的方式不同,因此不写上传图片到服务器相关代码),只是对选择图片做简单的介绍,没有涉...

解决android4.4以上系统的相册选择图片后获取不到有效的URI

最近用到上传图片, /** * 图片选择及拍照结果 */ @Override protected void onActivityResult(int reque...

一行代码实现安卓照片选取上传服务器,并适配安卓7.0无法调起相机的问题

最近在开发时需要实现头像更换功能,这里就要用到拍照和相册选取功能了。但是在安卓7.0的手机上遇到无法打开相机的问题。下面就针对7.0做了一些处理优化。...

解决Android4.4及以上系统获取系统图片失败的问题,例如华为手机,调系统图库的时候就出现异常

本来我是想转载的,但是忘记原帖在哪了,但是按照下面的方法确实解决了这个棘手的问题,不墨迹,直接上代码:     @Override     protected void onActivityRes...

微信内网页某些安卓手机不能上传图片文件的问题(2)

起这个标题名只是为了和前一篇文章相对应。 相对比较完善的手机端网页图片上传完成了,其中碰见了很多问题,由于是第一次弄,就一个个的解决掉,最后这个目前来说是比较满意的版本。 开发环境为 Bootstra...
  • zx75991
  • zx75991
  • 2016年01月05日 11:56
  • 3194

Android 调用系统相机,拍照,并上传图片所注意的一些问题

其实android拍照这个地方还是有很多注意事项的,我在上个项目中就遇到一些坑,因此我想把它记录下来,希望能帮助一些跟我遇到的同样的问题的人如果你在项目中遇到以下问题: 通过系统路径,拍出来的图片不清...

微信内网页某些安卓手机不能上传图片文件的问题(1)

最近的一个项目是微信公众号关联的网站,自然用新技术HTML5 了。 在某个手机发布信息的页面中,却碰到了一个诡异的问题。 在某些安卓手机上无法使用上传图片功能,你怎么点都没问题。 微信并没有对type...
  • zx75991
  • zx75991
  • 2015年12月26日 18:15
  • 4582

Android MAC地址 02:00:00:00:00:00

转载:http://blog.csdn.net/zhaohaiyan629/article/details/51122344 谷歌在6.0及以后版本对获取wifi及蓝牙MacAddress 做的改...
  • oLevin
  • oLevin
  • 2016年10月25日 00:47
  • 3432

Android系统中的进程管理:进程的优先级

本文是Android进程管理系列文章的第二篇,会讲解进程管理中的优先级管理。 进程管理的第一篇文章:《进程的创建》请跳转至这里。 本文适合Android平台的应用程序开发者,也适合对于An...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android手机图片上传 选择不了本地照片 解决方案
举报原因:
原因补充:

(最多只允许输入30个字)