android - select-multiple-images-from-android,如何获取Uris?

标签 android

描述:http://www.rqgg.net/topic/vrvkz-select-multiple-images-from-android-gallery.html

如果调用者可以处理多个返回项(用户执行多项选择),那么它可以指定 EXTRA_ALLOW_MULTIPLE 来指示这一点。

这很有趣。他们在这里指的是用户可以选择多个项目的用例吗?

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
    public void selectPhotos(){
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        startActivityForResult(Intent.createChooser(intent,
                "select multiple images"), SELECT_PHOTOS_RESULT);
    }


protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

        super.onActivityResult(requestCode, resultCode, intent);

        if (resultCode == RESULT_OK) {

            switch (requestCode) {
                case SELECT_PHOTOS_RESULT:
                    //how to get the Uris?
                    ...
                    break;

        }

    }

最佳答案

可能,我来晚了回答这个问题。可能会帮助正在寻找答案的人。

    if (intent != null) {
                ClipData clipData = intent.getClipData();
                if (clipData != null) {
                    for (int i = 0; i < clipData.getItemCount(); i++) {
                        ClipData.Item item = clipData.getItemAt(i);
                        Uri uri = item.getUri();

                        //In case you need image's absolute path
                        String path= getRealPathFromURI(getActivity(), uri)
                    }
                }
            }

public String getRealPathFromURI(Context context, Uri contentUri) {
    Cursor cursor = null;
    try {
        String[] proj = { MediaStore.Images.Media.DATA };
        cursor = context.getContentResolver().query(contentUri, proj, null,
                null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

注意:getClipData() 调用需要最低 API 级别 16

关于android - select-multiple-images-from-android,如何获取Uris?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071098/

相关文章:

java - 单元测试 RxJava onComplete、onNext 和 onError

android - 将 Sprite 附加到另一个 Sprite ANDENGINE

android - 防止 Android 上的 Unity 在启动画面上检测用户输入?

android - FloatingActionButton 在列表滚动时隐藏

Android TV 应用程序 - 无法使用 Remote 选择列表项

android - 向动态 GridView 添加水平滚动 : Android

java - 应为 BEGIN_OBJECT,但在第 13 行第 1 列路径 $ 处为 STRING

android - 无法在我的自定义 ArrayAdapter 中访问 R.layout.mylayoutname

Android - QCMediaPlayer 媒体播放器不存在

android - Android Bitmap.getPixels()从BufferedImage.getRGB()返回不同的数据