首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android中镜像路径为空

Android中镜像路径为空
EN

Stack Overflow用户
提问于 2016-12-12 21:37:30
回答 2查看 580关注 0票数 0

我有这样的代码,问题是当我想要将它保存到sqlite时,错误消息显示我在图像路径中获得了null。下面是主要的活动

代码语言:javascript
代码运行次数:0
运行
复制
public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_PICTURE) {
                Uri selectedImageUri = data.getData();
                System.out.println("Data Image : "+selectedImageUri);
                selectedImagePath = getPath(selectedImageUri);
                System.out.println("Image Path : " + selectedImagePath);
                image1.setVisibility(View.VISIBLE);
                image1.setImageURI(selectedImageUri);
            }
        }
    }
private String getRealPathFromURI(Uri contentURI) {
        String result;
        Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
        if (cursor == null) { // Source is Dropbox or other similar local file path
            result = contentURI.getPath();
        } else {
            cursor.moveToFirst();
            int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
            result = cursor.getString(idx);
            cursor.close();
        }
        return result;
    }
public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
EN

回答 2

Stack Overflow用户

发布于 2016-12-12 22:01:38

我使用这种方法从相机中拍摄照片。

代码语言:javascript
代码运行次数:0
运行
复制
private void capturePhoto() {
// save this Uri in a field variable.
    uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            new ContentValues());
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    startActivityForResult(intent, CAMERA_REQUEST);
}

然后,onActivityResult将如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK){
        // use the field Uri, it now points to the path to the image taken from the camera.
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-03-20 18:32:24

清单文件中的

  1. 设置权限

READ_EXTERNAL_STORAGE

  • If方法中授予
  1. 检查权限,在被授予权限后,它具有权限,然后调用doCreatePath()并在被授予权限时在onRequestPermissionsResult中设置相同权限。

代码语言:javascript
代码运行次数:0
运行
复制
void doCreatePath()
 {

        try {

            Uri originalUri = filePath;
            String pathsegment[] = originalUri.getLastPathSegment().split(":");
            String id = pathsegment[0];
            final String[] imageColumns = {MediaStore.Images.Media.DATA};
            final String imageOrderBy = null;
            Uri uri = getUri();
            Cursor imageCursor = getActivity().getContentResolver().query(uri, imageColumns,
                    null, null, null);

            if (imageCursor.moveToFirst()) {
                int column_index_data = imageCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                realPath = imageCursor.getString(column_index_data);
                System.out.print("value" + realPath);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

它起作用了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41102150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档