728x90
인텐트로 안드로이드 사진앨범을 실행해서 하는 것이 아닌 ActivityResultLauncher 으로 해보겠습니다.
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.ImageView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.PickVisualMediaRequest;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class test extends AppCompatActivity {
ImageView selectedImageView;
ActivityResultLauncher<PickVisualMediaRequest> pickMultipleMedia;
Button selectPhotosButton;
String TAG = "test";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
selectedImageView = findViewById(R.id.selectedImageView);
selectPhotosButton = findViewById(R.id.selectPhotosButton);
// 다중 선택 모드로 사진 선택기 활동 등록
selectPhotosButton.setOnClickListener(v -> {
// 사진 선택기를 실행하고 사용자가 이미지와 비디오를 선택하도록 합니다.
pickMultipleMedia.launch(new PickVisualMediaRequest.Builder()
.setMediaType(ActivityResultContracts.PickVisualMedia.ImageAndVideo.INSTANCE)
.build());
});
select_img(1);
}
void select_img(int num) {
if (num == 1) {
num = 2;
}
pickMultipleMedia = registerForActivityResult(new ActivityResultContracts.PickMultipleVisualMedia(num), uris -> {
// 사용자가 미디어 항목을 선택하거나 사진 선택기를 닫으면 콜백이 호출됩니다.
if (!uris.isEmpty()) {
Log.d(TAG, "Number of items selected: " + uris.size());
Log.d(TAG, "items selected Uris : " + uris.toString());
// 첫 번째 선택된 이미지를 ImageView에 표시합니다.
selectedImageView.setImageURI(uris.get(0));
} else {
Log.d(TAG, "No media selected");
}
});
}
}
<!-- res/layout/activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<Button
android:id="@+id/selectPhotosButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select Photos" />
<ImageView
android:id="@+id/selectedImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:scaleType="centerCrop" />
</LinearLayout>
시연영상
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] UTC 시간을 로컬 시간으로 변경하기 (0) | 2024.08.03 |
---|---|
[JAVA][Android] Segmented buttons 사용하기 (0) | 2024.08.01 |
[JAVA][Android] 어댑터 재활용 하여 중첩 리사이클러뷰 만들기 (0) | 2024.07.29 |
[JAVA][Android] 하나의 리사이클러뷰에 여러 타입의 뷰 추가하기 (Multi-View Type) (0) | 2024.07.28 |
[JAVA][Android]항목 선택 다이얼로그 만들기 (0) | 2024.07.27 |