从0开始认识android(十):选择照片或视频的Intent

1、启动相册

static final int REQUEST_IMAGE_GET = 1;

    public void selectImageVideo() {
        //4.3以上的action,该action会将文件副本导入我们的应用,即我们看到的是副本
//        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        //4.4以上的action,该action不会将文件副本导入我们的应用,即我们看到的是源文件
        //只显示照片供选择,可以多选
        //        intent.setType("image/*");
        //只显示视频供选择,可以多选
        //        intent.setType("video/*");
        //同时显示照片和视频供选择,此时Intent.EXTRA_ALLOW_MULTIPLE不能为true,即不支持多个文件
        intent.setType("*/*");
        ArrayList<String> mimes = new ArrayList<>();
        mimes.add("image/*");
        mimes.add("video/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimes);
        //4.3以上的设备才支持Intent.EXTRA_ALLOW_MULTIPLE,是否可以一次选择多个文件
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);
        //返回的文件是否必须存在于设备上,而不是需要从远程服务下载的,用于解决用户选中的是云端文件时的问题
        intent.putExtra(Intent.EXTRA_LOCAL_ONLY, false);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(intent, REQUEST_IMAGE_GET);
        }
    }

2、解析选择结果

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case REQUEST_IMAGE_GET:
                    ClipData clipData = data.getClipData();
                    if (clipData == null) {
                        //用户只选择了一个文件
                        String uriStr = data.getDataString();
                        //判断用户选择的是照片还是视频
                        if (uriStr.contains("image")) {
                            Uri fullPhotoUri = data.getData();
                            mImageView.setImageURI(fullPhotoUri);
                        } else if (uriStr.contains("VIDEO")) {
                            //TODO 显示视频
                        }
                    } else {
                        //用户选择了多个文件
                        Uri firstUri = clipData.getItemAt(0).getUri();
                        String uriStr = firstUri.toString();
                        //判断用户选择的是照片还是视频
                        if (uriStr.contains("image")) {
                            mImageView.setImageURI(firstUri);
                        } else if (uriStr.contains("VIDEO")) {
                            //TODO 显示视频
                        }
                    }
                    break;

                default:
                    break;
            }
        }
    }
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值