Intent.ACTION_PICK ব্যবহার করে ইমেজ পিক করুন
এই ক্লাসিক টিউটোরিয়ালে দেখানো হয়েছে কিভাবে সিস্টেম গ্যালারি খুলে ব্যবহারকারীকে ছবি বেছে নেওয়ার অনুমতি দেওয়া যায় এবং ফলাফল পাওয়া যায়।
ধাপ ১: প্রজেক্ট তৈরি
ধাপ ২: লেআউট
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<Button
android:id="@+id/buttonLoadPicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:text="Load Picture"
android:layout_gravity="center" />
</LinearLayout>
ধাপ ৩: MainActivity.java
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
ImageView imageView;
Button button;
private static final int PICK_IMAGE = 100;
Uri imageUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
button = findViewById(R.id.buttonLoadPicture);
button.setOnClickListener(v -> openGallery());
}
private void openGallery() {
Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(gallery, PICK_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == PICK_IMAGE) {
imageUri = data.getData();
imageView.setImageURI(imageUri);
}
}
}
গুরুত্বপূর্ণ আপডেট: Activity Result API (আধুনিক পদ্ধতি)
startActivityForResult এবং onActivityResult **ডিপ্রিকেটেড**। নতুন পদ্ধতি:
১. build.gradle-এ নির্ভরতা
implementation "androidx.activity:activity-ktx:1.8.0"
২. ActivityResultLauncher ব্যবহার করুন
// Activity-এ ফিল্ড হিসেবে private ActivityResultLauncherpickImageLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == RESULT_OK && result.getData() != null) { Uri imageUri = result.getData().getData(); imageView.setImageURI(imageUri); } } ); // কল করুন private void openGallery() { Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); pickImageLauncher.launch(gallery); }
পারমিশন (Android 10+ / API 29+)
READ_EXTERNAL_STORAGE- Android 10-এ আপনার অ্যাপের ফোল্ডারের বাইরের ফাইল পড়তে লাগে- Android 11+ (API 30+) -
READ_EXTERNAL_STORAGEদিয়ে সব ফাইল পড়া যায় না, MediaStore বা Storage Access Framework ব্যবহার করুন - সেরা পদ্ধতি:
Intent.ACTION_OPEN_DOCUMENTবাACTION_PICK(পারমিশন ছাড়া কাজ করে)
ক্যামেরা থেকে ছবি নেওয়া (বোনাস)
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, REQUEST_CAMERA);