一,官方文档:
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());
}
});
}
}
三,测试效果:
![]()