使用相册中照片

本文详细介绍了在Android应用中如何从相册选择图片,并获取所选图片的路径。通过发送一个ACTION_PICK意图并指定EXTERNAL_CONTENT_URI,启动系统相册选择图片。在onActivityResult中处理返回的Uri,使用ContentResolver查询图片的真实路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 使用相册中的图片
 */
public static final int SELECT_PIC_BY_PICK_PHOTO = 2;
/**
 * 获取到的图片路径
 */
private String picPath;

private void pickPhoto() {
    Intent intent = new Intent(Intent.ACTION_PICK,
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    photo_1.onActivityResult(requestCode, resultCode, data);
    if (resultCode != Activity.RESULT_OK) {
        Log.e("TAG", "ActivityResult resultCode error");
        return;
    }

    switch (requestCode) {
        case SELECT_PIC_BY_PICK_PHOTO:
            Uri uri = data.getData();
            if (!TextUtils.isEmpty(uri.getAuthority())) {
                //查询选择图片
                Cursor cursor = getContentResolver().query(
                        uri,
                        new String[]{MediaStore.Images.Media.DATA},
                        null,
                        null,
                        null);
                //返回 没找到选择图片
                if (null == cursor) {
                    return;
                }
                //光标移动至开头 获取图片路径
                cursor.moveToFirst();
                picPath = cursor.getString(cursor
                        .getColumnIndex(MediaStore.Images.Media.DATA));
                touxiang1.setImageURI(Uri.parse(picPath));
                Log.e("图片路径啊啊啊啊啊啊", picPath);
            }
            break;
        /*case SELECT_PIC_BY_TACK_PHOTO:
            //裁剪图片
            startPhotoZoom(takePhoto);
            break;
        case RESULT_REQUEST_CODE :
            if (data != null) {
                Log.d("图片路径",data.getData().toString());
                picPath = getPathByUri4kitkat(getApplicationContext(),data.getData());
                Log.d("图片路径啊啊啊啊啊啊",picPath);
            }
            break;*/
    }
    /*if(requestCode != SELECT_PIC_BY_TACK_PHOTO) {
        lastIntent.putExtra(KEY_PHOTO_PATH, picPath);
        setResult(Activity.RESULT_OK, lastIntent);
        finish();
    }*/
    super.onActivityResult(requestCode, resultCode, data);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值