Intent.ACTION_SEND ব্যবহার করে ইমেইল কম্পোজ করা
অ্যান্ড্রয়েডে নিজের অ্যাপ থেকে সরাসরি ইমেইল পাঠানোর পরিবর্তে, সিস্টেমের ইমেইল ক্লায়েন্ট (Gmail, Outlook ইত্যাদি) খোলা এবং প্রি-ফিল্ড ডেটা পাঠানো উচিত। এটি Intent.ACTION_SEND এবং Intent.createChooser() ব্যবহার করে করা হয়।
ধাপ ১: প্রজেক্ট তৈরি করুন
স্ট্যান্ডার্ড অ্যান্ড্রয়েড প্রজেক্ট সেটআপ।
ধাপ ২: লেআউট - ইমেইল ফর্ম
res/layout/activity_main.xml - প্রাপক, বিষয়, বার্তা এবং পাঠান বাটন:
<?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="match_parent"
android:padding="4dp"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Recipient email!" />
<EditText android:id="@+id/editTextMail" android:layout_width="match_parent" android:layout_height="wrap_content" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Subject" />
<EditText android:id="@+id/editTextSubject" android:layout_width="match_parent" android:layout_height="wrap_content" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Message" />
<EditText android:id="@+id/editTextMessage" android:layout_width="match_parent" android:layout_height="wrap_content" android:lines="4" />
<Button android:id="@+id/buttonSend" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Send" />
</LinearLayout>
ধাপ ৩: ইমেইল ইন্টেন্ট লজিক
src/MainActivity.java:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText editTextMail, editTextSubject, editTextMessage;
Button buttonSend;
String email, subject, message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextMail = findViewById(R.id.editTextMail);
editTextSubject = findViewById(R.id.editTextSubject);
editTextMessage = findViewById(R.id.editTextMessage);
buttonSend = findViewById(R.id.buttonSend);
buttonSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getData();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{email});
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
intent.setType("message/rfc822");
startActivity(Intent.createChooser(intent, "Select email client"));
}
});
}
private void getData() {
email = editTextMail.getText().toString().trim();
subject = editTextSubject.getText().toString().trim();
message = editTextMessage.getText().toString().trim();
}
}
গুরুত্বপূর্ণ পয়েন্ট
- message/rfc822 MIME টাইপ শুধু ইমেইল অ্যাপ ফিল্টার করে
- createChooser() ব্যবহারকারীকে অ্যাপ বেছে নেওয়ার সুযোগ দেয়
- EXTRA_EMAIL স্ট্রিং অ্যারে নেয় (একাধিক প্রাপক সম্ভব)
- অ্যাটচমেন্টের জন্য
Intent.EXTRA_STREAMব্যবহার করুন
উন্নত বৈশিষ্ট্য: অ্যাটচমেন্ট যোগ করা
// ফাইল URI পেতে FileProvider ব্যবহার করুন Uri fileUri = FileProvider.getUriForFile(this, "com.example.fileprovider", file); intent.putExtra(Intent.EXTRA_STREAM, fileUri); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);