安卓如何从图库中选择一张图片

3
在片段中,我像这样调用图库意图:

在片段中,我通过以下方式调用相册意图:

         // Create the Intent for Image Gallery.
        Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, MainActivity.LOAD_IMAGE_RESULTS);

在主活动中,我使用以下代码处理结果:
public static int LOAD_IMAGE_RESULTS = 1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.w("reqestCode:",""+requestCode);
    if(requestCode == LOAD_IMAGE_RESULTS && data != null && data.getData() != null) {
        Uri _uri = data.getData();

        //User had pick an image.
        Cursor cursor = getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
        cursor.moveToFirst();

        //Link to the image
        final String imageFilePath = cursor.getString(0);
        Log.w("ImageFile",imageFilePath);
        cursor.close();
    }
}

但是在onActivityResult中,requestCode返回的值为196609。所以我的代码无法正常工作。我该如何解决?

3个回答

0

看起来问题出在你创建的Intent上。尝试像这样:

                pictureActionIntent = new Intent(
                        Intent.ACTION_GET_CONTENT, null);
                pictureActionIntent.setType("image/*");
                pictureActionIntent.putExtra("return-data", true);
                startActivityForResult(pictureActionIntent,
                        GALLERY_PICTURE);

更多信息请查看this答案。


我尝试了,但仍然存在同样的问题。请求代码返回196609。 - Okan

0

尝试这段代码,它会起作用的 // 启动活动

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
                Intent.createChooser(intent, "Select Picture"),
                GALLERY_INTENT_CALLED);

//在onActivityResult中获取位图

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == GALLERY_INTENT_CALLED) {
            if (null == data)
                return;
            String selectedImagePath;
            Uri selectedImageUri = data.getData();
            // MEDIA GALLERY
             Bitmap bitmap = BitmapFactory.decodeFile(ImageFilePath.getPath(
                    getApplicationContext(), selectedImageUri));
            ivProfileImage.setImageBitmap(bitmap);

        }
    }
}

0

你说你是从Fragment中调用这个方法的。你有尝试在两个地方监听onActivityResult吗?既在Activity中,也在Fragment中?值得一试。 :)


你确定LOAD_IMAGE_RESULTS不等于196609,对吧? :D - AndreiBogdan
我在我的问题中提到了LOAD_IMAGE_RESULTS。你可以在第二个代码块中查看。 - Okan
1
我将onActivityResult移动到了Fragment中,然后它就可以工作了。谢谢。 - Okan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接