1

我想从图库中挑选照片,但从下面的代码中,它显示了带有 SD 卡外部应用程序的图库,例如 ex Astro Manager。我希望它应该只显示画廊而不是其他第三方应用程序或与这些东西相关的东西等。

当前列出所有可以浏览的应用程序的虚拟代码,如 Astro Manager 等。

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

3 回答 3

3

您的代码是正确的,但您几乎不需要我的帮助。只需查看链接,它将帮助您处理 Gallery Link

对于您的任务,您可以添加此示例代码

Intent i = new Intent(
Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
于 2012-11-20T17:53:26.540 回答
0

试试这个 -

private static final int PICTURE_GALLERY = 1;
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(photoPickerIntent, PICTURE_GALLERY);
于 2013-06-24T21:18:09.577 回答
0

如果您的应用支持 sdk 版本 JELLY_BEAN_MR2。最好像这样打开意图,

Intent intent;
    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2) {
        intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        intent.setType("image/*");
    } else {
        intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("image/*");
    }
checkAndStartActivityForResult(intent, RESULT_LOAD_IMAGE);


private void checkAndStartActivityForResult(Intent intent, int requestCode) {
    //Open only if any intent can be handled from some component
    if (intent.resolveActivity(getActivity().getPackageManager())!=null) {
        startActivityForResult(createChooser(intent, ""), requestCode);
    }else{
    //show error to user
    }
}
于 2017-02-21T17:13:07.860 回答