परिचय
यह उदाहरण दर्शाता है कि एंड्रॉइड में इंटेंट का उपयोग करके गैलरी से इमेज कैसे चुनें और उसे ImageView में प्रदर्शित करें।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट फ़ाइल में कोड जोड़ें
res/layout/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="centerCrop"
android:contentDescription="चुनी गई इमेज" />
<Button
android:id="@+id/buttonLoadPicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="16dp"
android:text="इमेज चुनें" />
</LinearLayout>
चरण 3: MainActivity.kt में कोड जोड़ें
import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore
import android.widget.Button
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.result.registerForActivityResult
class MainActivity : AppCompatActivity() {
private lateinit var imageView: ImageView
private lateinit var button: Button
private var imageUri: Uri? = null
// मॉडर्न Activity Result API (API 30+ के लिए अनुशंसित)
private val pickImageLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val data = result.data
imageUri = data?.data
imageUri?.let { imageView.setImageURI(it) }
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
imageView = findViewById(R.id.imageView)
button = findViewById(R.id.buttonLoadPicture)
button.setOnClickListener {
val galleryIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
pickImageLauncher.launch(galleryIntent)
}
}
// लीगेसी सपोर्ट के लिए (पुराने API के लिए)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
// नए API के साथ आमतौर पर आवश्यक नहीं
}
}
चरण 4: AndroidManifest.xml में अनुमति जोड़ें
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.q11">
<!-- Android 10 (API 29) और नीचे के लिए -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Android 11 (API 30)+ के लिए -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
महत्वपूर्ण नोट्स
- मॉडर्न API: `registerForActivityResult` का उपयोग करें (Activity 1.2.0+) - यह `startActivityForResult` से बेहतर है
- स्टोरेज अनुमतियाँ: Android 10+ पर स्कोप्ड स्टोरेज के कारण `READ_EXTERNAL_STORAGE` की आवश्यकता नहीं हो सकती
- कंटेंट प्रोवाइडर: `MediaStore.Images.Media.EXTERNAL_CONTENT_URI` आंतरिक स्टोरेज के बजाय बाहरी स्टोरेज के लिए बेहतर है
- रनटाइम अनुमतियाँ: Android 6.0+ पर खतरनाक अनुमतियों के लिए रनटाइम अनुमति अनुरोध लागू करें
ऐप चलाएं
ऐप चलाएं, "इमेज चुनें" दबाएं, गैलरी से इमेज चुनें और देखें कि यह ImageView में प्रदर्शित होती है।