কম্পিউটার টিউটোরিয়াল

Android ডিভাইসের প্রাইমারি ইমেইল ঠিকানা পাওয়ার পদ্ধতি

Android ডিভাইসের প্রাইমারি ইমেইল ঠিকানা পাওয়ার পদ্ধতি

এই উদাহরণটি দেখায় কিভাবে AccountManager ব্যবহার করে Android ডিভাইসে কনফিগার করা ইমেইল অ্যাকাউন্টগুলো থেকে প্রাইমারি ইমেইল ঠিকানা পাওয়া যায়।

⚠️ গুরুত্বপূর্ণ দ্রষ্টব্য: এই পদ্ধতিটি শুধুমাত্র রুট করা ডিভাইস-এ কাজ করে বা যদি অ্যাপ্লিকেশনের সিস্টেম লেভেল পারমিশন থাকে। সাধারণ অ্যাপ্লিকেশনের জন্য GET_ACCOUNTS পারমিশন Android 6.0+ (API 23+) এ ডিপ্রিকেট করা হয়েছে এবং Android 10+ (API 29+) এ সাধারণ অ্যাপের জন্য সরাসরি অ্যাকাউন্ট অ্যাক্সেস সীমাবদ্ধ করা হয়েছে। আধুনিক Android-এ ব্যবহারকারীর ইমেইল পেতে Google Sign-In বা Credential Manager API ব্যবহার করা উচিত।

প্রয়োজনীয় ধাপসমূহ

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project এ যান এবং প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="8dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAlignment="center"
        android:textSize="24sp"
        android:textStyle="bold"
        android:text="প্রাইমারি ইমেইল ঠিকানা: লোড হচ্ছে..." />

</RelativeLayout>

ধাপ ৩: MainActivity.java বাস্তবায়ন করুন

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.util.Patterns;
import android.widget.TextView;
import android.widget.Toast;

import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

    private Activity activity = MainActivity.this;
    private static final int PERMISSION_REQUEST_CODE = 1;
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.textView);

        String wantPermission = Manifest.permission.GET_ACCOUNTS;

        // রানটাইম পারমিশন চেক (Android 6.0+)
        if (!checkPermission(wantPermission)) {
            requestPermission(wantPermission);
        } else {
            getEmails();
        }
    }

    private void getEmails() {
        Pattern emailPattern = Patterns.EMAIL_ADDRESS;
        Account[] accounts = AccountManager.get(this).getAccounts();

        for (Account account : accounts) {
            if (emailPattern.matcher(account.name).matches()) {
                String TAG = "MainActivity";
                Log.d(TAG, String.format("%s - %s", account.name, account.type));

                // প্রথম ইমেইল পাওয়ার পর ব্রেক করুন (প্রাইমারি ধরে নেওয়া)
                textView.setText("প্রাইমারি ইমেইল ঠিকানা: " + account.name);
                break;
            }
        }
    }

    private boolean checkPermission(String permission) {
        if (Build.VERSION.SDK_INT >= 23) {
            int result = ContextCompat.checkSelfPermission(activity, permission);
            return result == PackageManager.PERMISSION_GRANTED;
        } else {
            return true; // Android 6.0-এর নিচে ইনস্টল টাইমে পারমিশন দেওয়া হয়
        }
    }

    private void requestPermission(String permission) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
            Toast.makeText(activity, "অ্যাকাউন্ট পারমিশন দিলে আমরা আপনার ইমেইল পেতে পারব", Toast.LENGTH_LONG).show();
        }
        ActivityCompat.requestPermissions(activity, new String[]{permission}, PERMISSION_REQUEST_CODE);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == PERMISSION_REQUEST_CODE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                getEmails();
            } else {
                Toast.makeText(activity, "পারমিশন অস্বীকৃত।", Toast.LENGTH_LONG).show();
            }
        }
    }
}

ধাপ ৪: AndroidManifest.xml-এ পারমিশন যোগ করুন

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <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>

আধুনিক বিকল্প: Google Sign-In / Credential Manager

Android 10+ (API 29+) এবং পরবর্তী ভার্সনগুলিতে, সাধারণ অ্যাপ্লিকেশন সরাসরি অ্যাকাউন্ট ম্যানেজার অ্যাক্সেস করতে পারে না। ব্যবহারকারীর ইমেইল পেতে নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করুন:

১. Google Sign-In (পরামর্শিত)

// build.gradle-এ ডিপেন্ডেন্সি
implementation 'com.google.android.gms:play-services-auth:20.7.0'

// কোডে
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build();
GoogleSignInClient client = GoogleSignIn.getClient(this, gso);
// সাইন-ইন ফ্লো চালু করুন

২. Credential Manager API (Android 14+ / API 34+)

নতুন Credential Manager API ব্যবহার করে পাসকী, পাসওয়ার্ড এবং ফেডারেটেড সাইন-ইন (Google, GitHub ইত্যাদি) একসাথে হ্যান্ডেল করা যায়।

৩. Autofill Framework

ব্যবহারকারী যদি অটোফিল সার্ভিস (যেমন Google Autofill) ইনেবল রাখে, তবে আপনার অ্যাপ স্বয়ংক্রিয়ভাবে ইমেইল সাজেশন পেতে পারে।

অ্যাপ্লিকেশন চালানোর পদ্ধতি

আপনার Android ডিভাইস কম্পিউটারের সাথে সংযুক্ত করুন। Android Studio-তে Run আইকনে ক্লিক করুন এবং ডিভাইসে আউটপুট দেখুন। মনে রাখবেন এটি শুধুমাত্র রুট করা ডিভাইস বা সিস্টেম অ্যাপে কাজ করবে।

Android ডিভাইসের প্রাইমারি ইমেইল ঠিকানা পাওয়ার পদ্ধতি

দ্রষ্টব্য: এই প্রোগ্রাম শুধুমাত্র রুট করা ডিভাইসে কাজ করবে।

  1. অ্যান্ড্রয়েড ডিভাইসে টাচ পজিশন (X, Y কোঅর্ডিনেট) পাওয়ার পদ্ধতি

  2. এন্ড্রয়েডে প্রোগ্রামেটিক্যালি ডিভাইসের IP ঠিকানা পাওয়ার পদ্ধতি

  3. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি ডিভাইসের IMEI/ESN নম্বর পাওয়ার পদ্ধতি

  4. Android Emulator-এর IP Address পাওয়ার পদ্ধতি