关于android获取相册有些机型路径为空的解决办法

添加一个从相册返回的路径

private String getUrl(Uri uri){
    String url = "";
    if (!TextUtils.isEmpty(uri.getAuthority())) {
        try {
            cursor = getContentResolver().query(uri,
                    new String[]{MediaStore.Images.Media.DATA}, null, null, null);
            if (null == cursor) {
                showAnimator("图片没找到",Constants.STYLE_ALERT);
                return url;
            }
            cursor.moveToFirst();
            url = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    } else {
        url = uri.getPath();
    }
    return url;
}
这个方法得到一个图片的路径,接下来的事就可以根据这个路径做想做的事~比如上传和设置到页面

try {
    Uri _uri = data.getData();
    if(!TextUtils.isEmpty(getUrl(_uri))){
        file1 = new File(getUrl(_uri));
        if (file1.exists()) {
            mBitmap1 = BitmapFactory.decodeFile(getUrl(_uri));
        }
        if (null != mBitmap1) {
            feedback_fk01.setImageBitmap(Bitmap.createScaledBitmap(mBitmap1, 200, 200, false));

        }
    }else {
        showAnimator("未找到图片",Constants.STYLE_ALERT);
    }
} catch (Exception ce) {
}
最后附上选择照片的Intent,因为踩过一个坑,如果intent.setAction(Intent.ACTION_GET_CONTENT);话可能在4.4以后的版本机型会获取不到真实的路径,所以改成

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
startActivityForResult(intent, Constants.REQUEST_GALLERY);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值