android:从相册选择多张图片

一,官方文档:

https://developer.android.google.cn/training/data-storage/shared/photopicker?authuser=5&hl=zh-cn#java

二,代码:

package com.example.okdemo1.activity;

import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.PickVisualMediaRequest;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import com.example.okdemo1.R;

public class ImageActivity extends AppCompatActivity {
    private static final int STORAGE_PERMISSION_CODE = 101;
    private ImageView imageView;
    private ActivityResultLauncher<String> mGalleryLauncher;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_image);

        //初始化launcher
        ActivityResultLauncher<PickVisualMediaRequest> pickMultipleMedia =
                registerForActivityResult(new ActivityResultContracts.PickMultipleVisualMedia(5), uris -> {
                    // Callback is invoked after the user selects media items or closes the
                    // photo picker.
                    if (!uris.isEmpty()) {
                        Log.d("PhotoPicker", "Number of items selected: " + uris.size());
                        for (int i = 0; i < uris.size(); i++) {
                            Uri element = uris.get(i);
                            System.out.println(element);
                            // 对元素进行操作
                        }
                    } else {
                        Log.d("PhotoPicker", "No media selected");
                    }
                });


        //初始化imageview
        imageView = findViewById(R.id.userImage);

        //给按钮增加点击事件
        Button myButton = findViewById(R.id.savebutton);
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //打开相册选择
                pickMultipleMedia.launch(new PickVisualMediaRequest.Builder()
                        .setMediaType(ActivityResultContracts.PickVisualMedia.ImageAndVideo.INSTANCE)
                        .build());
            }
        });
    }
}

三,测试效果:

 

posted @ 2025-05-24 17:56  刘宏缔的架构森林  阅读(78)  评论(0)    收藏  举报