यह उदाहरण दर्शाता है कि Kotlin का उपयोग करके Android में फाइल अटैचमेंट के साथ ईमेल भेजने के लिए इंटेंट कैसे बनाया जाता है। Intent.ACTION_SEND और EXTRA_STREAM का उपयोग किया जाता है।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio खोलें, File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2: activity_main.xml में ईमेल फॉर्म UI बनाएं
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="4dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/etTo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:hint="Receiver's Email Address!"
android:inputType="textEmailAddress"
android:singleLine="true" />
<EditText
android:id="@+id/etSubject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:hint="Enter Subject"
android:singleLine="true" />
<EditText
android:id="@+id/etMessage"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_margin="5dp"
android:gravity="top|start"
android:hint="Compose Email"
android:inputType="textMultiLine" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btSend"
android:layout_width="80dp"
android:layout_height="50dp"
android:layout_margin="5dp"
android:text="Send" />
<Button
android:id="@+id/btAttachment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="attachment" />
</RelativeLayout>
<TextView
android:id="@+id/tvAttachment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_baseline_attach_file_24"
android:visibility="gone" />
</LinearLayout>
चरण 3: MainActivity.kt में ईमेल और अटैचमेंट लॉजिक
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
lateinit var etEmail: EditText
lateinit var etSubject: EditText
lateinit var etMessage: EditText
lateinit var send: Button
lateinit var attachment: Button
lateinit var tvAttachment: TextView
lateinit var email: String
lateinit var subject: String
lateinit var message: String
lateinit var uri: Uri
private val PICK_FROM_GALLERY = 101
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
etEmail = findViewById(R.id.etTo)
etSubject = findViewById(R.id.etSubject)
etMessage = findViewById(R.id.etMessage)
attachment = findViewById(R.id.btAttachment)
tvAttachment = findViewById(R.id.tvAttachment)
send = findViewById(R.id.btSend)
send.setOnClickListener { sendEmail() }
attachment.setOnClickListener { openFolder() }
}
private fun openFolder() {
val intent = Intent().apply {
type = "image/*"
action = Intent.ACTION_GET_CONTENT
putExtra("return-data", true)
}
startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_GALLERY)
}
private fun sendEmail() {
try {
email = etEmail.text.toString()
subject = etSubject.text.toString()
message = etMessage.text.toString()
val emailIntent = Intent(Intent.ACTION_SEND).apply {
type = "plain/text"
putExtra(Intent.EXTRA_EMAIL, arrayOf(email))
putExtra(Intent.EXTRA_SUBJECT, subject)
putExtra(Intent.EXTRA_STREAM, uri)
putExtra(Intent.EXTRA_TEXT, message)
}
startActivity(Intent.createChooser(emailIntent, "Sending email..."))
} catch (t: Throwable) {
Toast.makeText(this, "Request failed try again: $t", Toast.LENGTH_LONG).show()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == PICK_FROM_GALLERY && resultCode == RESULT_OK && data != null) {
uri = data.data!!
tvAttachment.text = uri.lastPathSegment
tvAttachment.visibility = View.VISIBLE
}
}
}
चरण 4: AndroidManifest.xml में अनुमतियां जोड़ें
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.q11">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
ऐप चलाएं
अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में किसी एक्टिविटी फ़ाइल को खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और ऐप चलने पर डिफ़ॉल्ट स्क्रीन देखें।
मल्टीपल अटैचमेंट्स के लिए:
val uris: ArrayList<Uri> = arrayListOf(uri1, uri2, uri3) emailIntent.action = Intent.ACTION_SEND_MULTIPLE emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris) emailIntent.type = "*/*"
HTML ईमेल के लिए:
emailIntent.type = "text/html"
emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml("Bold Italic"))