Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android डिवाइस का प्राइमरी ईमेल एड्रेस कैसे प्राप्त करें?

परिचय

यह ट्यूटोरियल दिखाता है कि Android डिवाइस पर कॉन्फ़िगर किए गए अकाउंट्स में से प्राइमरी ईमेल एड्रेस कैसे प्राप्त करें। हम AccountManager और GET_ACCOUNTS परमिशन का उपयोग करेंगे।

⚠️ महत्वपूर्ण चेतावनी

नोट: यह प्रोग्राम केवल रूटेड डिवाइस पर ही काम करेगा। आधुनिक Android वर्जन (Android 6.0+) में `GET_ACCOUNTS` परमिशन को प्रतिबंधित कर दिया गया है और सामान्य ऐप्स इसे एक्सेस नहीं कर सकते।

आवश्यक चरण

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project से नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल (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_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textStyle="bold"
        android:textAlignment="center"
        android:text="प्राइमरी ईमेल एड्रेस: testemail@gmail.com" />

</RelativeLayout>

चरण 3: मुख्य गतिविधि (src/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;
        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();
            }
        }
    }
}

चरण 4: मैनिफेस्ट फ़ाइल (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>

ऐप चलाएं

डिवाइस कनेक्ट करें और Run पर क्लिक करें। यदि डिवाइस रूटेड है और परमिशन दी गई है, तो प्राइमरी ईमेल दिखेगा।

Android डिवाइस का प्राइमरी ईमेल एड्रेस कैसे प्राप्त करें?

आधुनिक विकल्प (Android 6.0+)

चूंकि `GET_ACCOUNTS` अब प्रतिबंधित है, आधुनिक ऐप्स इन विकल्पों का उपयोग करते हैं:

  • Google Sign-In API - उपयोगकर्ता की सहमति से प्रोफाइल/ईमेल प्राप्त करने के लिए।
  • Credential Manager / One Tap Sign-In - नया, उपयोगकर्ता-अनुकूल तरीका।
  • Autofill Framework - सेव्ड क्रेडेंशियल्स भरने के लिए।

ये तरीके उपयोगकर्ता की गोपनीयता का सम्मान करते हैं और Play Store नीतियों का अनुपालन करते हैं।

  1. एंड्रॉइड डिवाइस का IP एड्रेस प्रोग्रामेटिकली कैसे प्राप्त करें? एंड्रॉइड डिवाइस का IP एड्रेस प्रोग्रामेटिकली कैसे प्राप्त करें?

    एंड्रॉइड में डिवाइस IP एड्रेस प्राप्त करना यह ट्यूटोरियल वाई-फाई और मोबाइल डेटा दोनों के लिए लोकल और पब्लिक IP एड्रेस प्राप्त करने के तरीकों को कवर करता है। आवश्यक अनुमतियाँ <uses-permission android:name=android.permission.ACCESS_WIFI_STATE /> <uses-permission android:name=android.permissi

  1. एंड्रॉइड में प्रोग्रामेटिक रूप से डिवाइस का IMEI/ESN नंबर कैसे प्राप्त करें? एंड्रॉइड में प्रोग्रामेटिक रूप से डिवाइस का IMEI/ESN नंबर कैसे प्राप्त करें?

    READ_PHONE_STATE परमिशन के साथ IMEI नंबर प्राप्त करें यह उदाहरण दर्शाता है कि TelephonyManager का उपयोग करके डिवाइस का IMEI नंबर कैसे प्राप्त करें और रनटाइम परमिशन कैसे संभालें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में बटन और TextView res/layout/acti

  1. Android Emulator का IP एड्रेस कैसे प्राप्त करें? Android Emulator का IP एड्रेस कैसे प्राप्त करें?

    WifiManager का उपयोग करके Android एमुलेटर/डिवाइस का स्थानीय IP एड्रेस प्रोग्रामेटिकली प्राप्त करने का तरीका। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android=https