首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Android Intent打开图库应用

从Android Intent打开图库应用
EN

Stack Overflow用户
提问于 2013-06-05 06:45:36
回答 6查看 96.6K关注 0票数 28

我正在寻找一种方法来打开Android画廊应用程序的意图。

我不想返回图片,而只是打开图库,允许用户使用它,就像他们从启动器(View pictures/folders)中选择它一样。

我尝试做了以下几件事:

代码语言:javascript
运行
复制
Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_GET_CONTENT);  
intent.setType("image/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

然而,这会导致应用程序在我选择一张图片后关闭(我知道这是因为ACTION_GET_CONTENT),但我只需要打开图库。

任何帮助都是最好的。

谢谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-05-23 12:58:05

这就是你所需要的:

代码语言:javascript
运行
复制
ACTION_VIEW

将您的代码更改为:

代码语言:javascript
运行
复制
Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
intent.setType("image/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
票数 36
EN

Stack Overflow用户

发布于 2013-09-13 15:21:29

我希望这能对你有所帮助。这段代码适用于我。

代码语言:javascript
运行
复制
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
 startActivityForResult(i, RESULT_LOAD_IMAGE);

ResultCode用于将所选图像更新到图库视图

代码语言:javascript
运行
复制
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
            && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);

        if (cursor == null || cursor.getCount() < 1) {
            return; // no cursor or no record. DO YOUR ERROR HANDLING
        }

        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

        if(columnIndex < 0) // no column index
            return; // DO YOUR ERROR HANDLING

        String picturePath = cursor.getString(columnIndex);

        cursor.close(); // close cursor

        photo = decodeFilePath(picturePath.toString());

        List<Bitmap> bitmap = new ArrayList<Bitmap>();
        bitmap.add(photo);
        ImageAdapter imageAdapter = new ImageAdapter(
                AddIncidentScreen.this, bitmap);
        imageAdapter.notifyDataSetChanged();
        newTagImage.setAdapter(imageAdapter);
    }
票数 34
EN

Stack Overflow用户

发布于 2013-06-05 10:59:30

您可以使用以下意图打开图库:

代码语言:javascript
运行
复制
public static final int RESULT_GALLERY = 0;

Intent galleryIntent = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent , RESULT_GALLERY );

如果您想要获取结果URI或执行其他任何操作,请使用以下命令:

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

    switch (requestCode) {
    case QuestionEntryView.RESULT_GALLERY :
        if (null != data) {
            imageUri = data.getData();
            //Do whatever that you desire here. or leave this blank

        }
        break;
    default:
        break;
    }
}

在Android 4.0+上测试

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

https://stackoverflow.com/questions/16928727

复制
相关文章

相似问题

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