详细的android通过相册和相机获取图片和路径的方法

一.权限

<uses-permission android:name="android.permission.CAMERA"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

分别代表调用相机的权限和内存读写的权限



二.点击事件

public void AddPic(View view) {
        CharSequence[] items = {"相册", "相机"};
        new AlertDialog.Builder(this)
                .setTitle("选择图片来源")
                .setItems(items, new DialogInterface.OnClickListener() {
                    public static final int SELECT_CAMER = 1;
                    public static final int SELECT_PICTURE = 0;

                    public void onClick(DialogInterface dialog, int which) {
                        if (Utils.getAndroidSDKVersion() < 19) {
                                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                                intent.setType("image/*");
                                startActivityForResult(intent, SELECT_PICTURE);
                            } else {
                                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.createChooser(intent, "选择图片"), SELECT_PICTURE);
                            }
                        } else {
                            try {
                                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                                //path为保存图片的路径,执行完拍照以后能保存到指定的路径下
                                File file;
                                private String picpath = "/storage/emulated/0/DCIM/Camera/", picfilename = "IMG_picpath1.jpg";
                                file = new File(picpath, picfilename);
                                if (Utils.getAndroidSDKVersion()<24){//安卓7.0以后版本,只接受content uri 不能再
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,获取图片的真实路径通常发生在用户选择图片后,通过Activity的`ACTION_GET_CONTENT`或者`ACTION_PICK_MEDIA`等意图来选择图片。以下是一般的步骤: 1. **启动相机相册选择器**: 使用`Intent`启动相机相册应用程序,让用户选择图片,例如: ```java Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, SELECT_PICTURE_REQUEST_CODE); ``` 2. **处理 onActivityResult**: 当用户选择图片后,会回调`onActivityResult`方法,你可以从这里获取图片路径: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == SELECT_PICTURE_REQUEST_CODE && resultCode == RESULT_OK) { Uri selectedImage = data.getData(); String imagePath = getPath(selectedImage); // 这里使用getPath()函数尝试获取图片的文件路径 } } private String getPath(Uri uri) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(uri, proj, null, null, null); if (cursor != null) { int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } else { return null; } } ``` 3. **注意文件权限和生命周期**: 获取到的路径可能是在应用内部存储或者外部存储,确保你的应用具有读取对应位置的权限,并在需要的时候妥善处理文件的关闭和清理,因为某些情况下,如设备重启,这些路径可能会失效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值