অ্যান্ড্রয়েড ডিভাইসের প্রাথমিক ইমেল ঠিকানাটি কীভাবে পাবেন get


412

আপনি কীভাবে অ্যান্ড্রয়েডের প্রাথমিক ইমেল ঠিকানা (বা ই-মেইল ঠিকানাগুলির একটি তালিকা) পাবেন?

এটি আমার বোধগম্য যে ওএস ২.০+ তে একাধিক ই-মেইল অ্যাড্রেসের সমর্থন রয়েছে তবে ২.০ এর নীচে আপনার প্রতি ডিভাইসটিতে কেবল একটি ইমেল ঠিকানা থাকতে পারে।


আপনি কি কোনও পরিচিতির ইমেল ঠিকানা পুনরুদ্ধার করার কথা বলছেন?
অস্টিন মাহুনি

1
না, ডিভাইসের প্রাথমিক ইমেল ঠিকানা।
ব্র্যান্ডন ও'রউর্কে

একটি অ্যান্ড্রয়েড ডিভাইসের সাথে যুক্ত এক বা একাধিক ইমেল ঠিকানা রয়েছে? এটাই আমি চাই।
ব্র্যান্ডন ও'রউর্ক

2
@ ব্র্যান্ডনও'রউড়কে আপনার কি "ডিভাইসের প্রাথমিক ইমেল ঠিকানা" অ্যান্ড্রয়েড মার্কেটের সাথে সম্পর্কিত হিসাবে বোঝানো হয়েছে? কারণ অ্যান্ড্রয়েড মার্কেটের সাথে সম্পর্কিত জিমেইল আইডি এবং অন্যান্য ইমেলগুলির মধ্যে পার্থক্য রয়েছে। এই প্রশ্নটি একবার দেখুন দেখুন stackoverflow.com/questions/10606976/…
গৌরব আগরওয়াল

উত্তর:


749

এটি করার বিভিন্ন উপায় রয়েছে যা নীচে দেখানো হয়েছে।

বন্ধুত্বপূর্ণ সতর্কতা হিসাবে, অ্যাকাউন্ট, প্রোফাইল এবং যোগাযোগের ডেটা নিয়ে ডিল করার সময় সাবধান এবং ব্যবহারকারীর সামনে থাকুন। আপনি যদি কোনও ব্যবহারকারীর ইমেল ঠিকানা বা অন্যান্য ব্যক্তিগত তথ্য অপব্যবহার করেন তবে খারাপ জিনিসগুলি ঘটতে পারে।

পদ্ধতি একটি: অ্যাকাউন্ট ম্যানেজারটি (এপিআই স্তর 5+) ব্যবহার করুন

আপনি ডিভাইসে সমস্ত অ্যাকাউন্টের নামের তালিকা ব্যবহার করতে AccountManager.getAccountsবা AccountManager.getAccountsByTypeপেতে পারেন । ভাগ্যক্রমে, নির্দিষ্ট অ্যাকাউন্টের ধরণের (সহ com.google) অ্যাকাউন্টের নামগুলি ইমেল ঠিকানা। নীচে স্নিপেট উদাহরণ।

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(context).getAccounts();
for (Account account : accounts) {
    if (emailPattern.matcher(account.name).matches()) {
        String possibleEmail = account.name;
        ...
    }
}

নোট করুন যে এর GET_ACCOUNTSঅনুমতির প্রয়োজন :

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

ব্যবহারের বিষয়ে আরও তথ্য এসডিকে AccountManagerথাকা যোগাযোগ ম্যানেজারের নমুনা কোডে পাওয়া যাবে ।

পদ্ধতি বি: পরিচিতি যোগাযোগ ব্যবহার করুন .প্রফাইল (এপিআই স্তর 14+)

অ্যান্ড্রয়েড 4.0.০ (আইসক্রিম স্যান্ডউইচ) হিসাবে, আপনি ব্যবহারকারীর ইমেল ঠিকানাগুলি তাদের প্রোফাইল অ্যাক্সেসের মাধ্যমে পেতে পারেন। ব্যবহারকারীর প্রোফাইলে অ্যাক্সেস করা কিছুটা ভারী ওজনের কারণ এতে দুটি অনুমতির দরকার হয় (নীচে সেইটিতে আরও), তবে ইমেল ঠিকানাগুলি মোটামুটি সংবেদনশীল টুকরাযুক্ত ডেটা, তাই এটি প্রবেশের মূল্য।

নীচে একটি পূর্ণ উদাহরণ যা CursorLoaderইমেল ঠিকানাগুলি সহ প্রোফাইল ডেটা সারিগুলি পুনরুদ্ধার করতে ব্যবহার করে ।

public class ExampleActivity extends Activity implements LoaderManager.LoaderCallbacks<Cursor> {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getLoaderManager().initLoader(0, null, this);
    }

    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle arguments) {
        return new CursorLoader(this,
                // Retrieve data rows for the device user's 'profile' contact.
                Uri.withAppendedPath(
                        ContactsContract.Profile.CONTENT_URI,
                        ContactsContract.Contacts.Data.CONTENT_DIRECTORY),
                ProfileQuery.PROJECTION,

                // Select only email addresses.
                ContactsContract.Contacts.Data.MIMETYPE + " = ?",
                new String[]{ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE},

                // Show primary email addresses first. Note that there won't be
                // a primary email address if the user hasn't specified one.
                ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
    }

    @Override
    public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
        List<String> emails = new ArrayList<String>();
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            emails.add(cursor.getString(ProfileQuery.ADDRESS));
            // Potentially filter on ProfileQuery.IS_PRIMARY
            cursor.moveToNext();
        }

        ...
    }

    @Override
    public void onLoaderReset(Loader<Cursor> cursorLoader) {
    }

    private interface ProfileQuery {
        String[] PROJECTION = {
                ContactsContract.CommonDataKinds.Email.ADDRESS,
                ContactsContract.CommonDataKinds.Email.IS_PRIMARY,
        };

        int ADDRESS = 0;
        int IS_PRIMARY = 1;
    }
}

এর জন্য অনুমতি READ_PROFILEএবং READ_CONTACTSঅনুমতি উভয়ই দরকার :

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

3
আপনার কোড ব্যবহার করে আমার অনুরূপ প্রশ্ন রয়েছে আমি আমার ফোনের সাথে সম্পর্কিত সমস্ত জিমেইল আইডি পেতে সক্ষম হয়েছি তবে আমি প্রাথমিকটি চাই। আমি একটি সমাধান খুঁজে পেয়েছি যেমন আমরা ফোনের সাথে সিঙ্ক্রোনাইজ করার জন্য আরও মেল আইডি যুক্ত করি এটি একটি স্ট্যাকের মধ্যে আসে যদি আমি 0 তম অবস্থানের কমজিআর আইডি পেয়ে থাকি তবে আমি প্রাথমিকটি পাই কারণ এটি প্রথমে প্রবেশ করে এবং একটি স্ট্যাকের মধ্যে 0 তম অবস্থান অর্জন করেছে । আমার কিছু কোড অ্যাকাউন্ট এখানে রয়েছে [] অ্যাকাউন্টস = অ্যাকাউন্টম্যানেজ.আরজেট (এটি) .getAccountsByType ("com.google"); স্ট্রিং মাইইমেলিড = অ্যাকাউন্টস [0]। টু স্ট্রিং (); লগ.ডি ("আমার ইমেল আইডি যা আমি চাই", মাইমেইল); আমি এটি সঠিক উপায় জানি না।
পীযুষমিশ্র

59
প্রোফাইল পদ্ধতিটি খারাপভাবে ত্রুটিযুক্ত (আমার মতে)। যে অ্যাপ্লিকেশনটি আমার ই-মেইল চায় / চায় সেগুলি আমার অ্যাপ্লিকেশনটির সাথে আমার সমস্ত পরিচিতি পড়তে চায় এমন তুলনায় কোনও বড় বিষয় নয়, তবে আপনি এটি তৈরি করেছেন যাতে উভয়কেই একই অনুমতিের প্রয়োজন হয়। সুতরাং একজন ব্যবহারকারী হিসাবে, আমি আমার অ্যাপ্লিকেশনটি যে ইমেলটি পড়তে চলেছি এবং আমার 500+ পরিচিতি পড়তে চলেছে এমন অ্যাপের মধ্যে পার্থক্য বলতে পারছি না। এটি আপনার পরিচিতির অপব্যবহারের অ্যাপ্লিকেশনগুলির সংখ্যা বৃদ্ধি পাওয়ায় এটি একটি আসল, বাস্তব সমস্যা!
টম

3
@ মুজিকান্ত এটি কোনওভাবেই অফিশিয়াল বিবৃতি নয়, তবে এটি এমন কিছু যা পরিবর্তনের পক্ষে মোটেই অসম্ভব। এটি বলার পরেও, কোনও ব্যবহারকারীর ইমেল ঠিকানাগুলি অ্যাক্সেস করার "সঠিক" উপায়টি হল মেথড বি more এটি আরও বেশি "অফিসিয়াল" এবং এটি কিছু হেভিওয়েটের অনুমতিগুলির পিছনে যে সংবেদনশীলতার সাথে আপনার যেমন ডেটা ব্যবহার করা উচিত তা নির্দেশ করা উচিত।
রোমান নুরিক

15
আমি এই বিষয়ে @ টম এর সাথে একমত ফোনের সমস্ত পরিচিতির ডেটার জন্য ব্যবহারকারীর প্রথম এবং শেষ নামটির জন্য অনুমতি চাওয়া হাস্যকর।
তাসোমানিয়াক

3
পদ্ধতি বি আমার জন্য অ্যান্ড্রয়েড 4.4 এ কাজ করছে না সমস্ত উদাহরণ কোডটি অনুলিপি করছে। cursor.isAfterLast()সর্বদা সত্য ফিরে। কোন ধারণা?
cprcrack

55

এটি অন্যের জন্য দরকারী হতে পারে:

কোনও বৈশ্বিক অনুমতি ছাড়াই ব্যবহারকারীর ইমেল ঠিকানা পেতে অ্যাকাউন্টপিকার ব্যবহার করে এবং ব্যবহারকারীকে সচেতন হতে ও প্রক্রিয়াটি অনুমোদন করতে বা বাতিল করতে দেয়।


1
এটি একটি খুব সহায়ক উত্তর, আমি মনে করি এটি পছন্দসই বিকল্প হওয়া উচিত কারণ প্রাথমিক ইমেলের অর্থ সাধারণত গুগল অ্যাকাউন্ট, যার
ফলস্বরূপ আপনি

@ অ্যালেক্স.এফ মার্শমেলোয়ের পরে / থেকে এন্ড্রয়েড সংস্করণগুলির জন্য কাজ করে?
এশ্বর

27

আমি আইসিএসে প্রবর্তিত অ্যান্ড্রয়েডের অ্যাকাউন্টপিকার ব্যবহার করব ।

Intent googlePicker = AccountPicker.newChooseAccountIntent(null, null, new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null);
startActivityForResult(googlePicker, REQUEST_CODE);

এবং তারপরে ফলাফলটির জন্য অপেক্ষা করুন:

protected void onActivityResult(final int requestCode, final int resultCode,
                                final Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
    }
}

2
মনে রাখবেন এটির জন্য আপনাকে প্লে-পরিষেবাগুলি ব্যবহার করা দরকার এবং এটি কোনও কোনও ক্ষেত্রে একটি ডায়ালগ প্রদর্শন করবে যে ব্যবহারকারীর অ্যাকাউন্টটি চয়ন করতে হবে।
অ্যান্ড্রয়েড বিকাশকারী

অ্যাকাউন্টম্যানেজ.নিউচুউসাউন্টঅ্যান্ট () ব্যবহার করে একই কাজ করুন এবং প্লে-পরিষেবা লাইব্রেরির প্রয়োজন নেই।
ডেনিস

এটি কি সর্বশেষতম অ্যান্ড্রয়েড সংস্করণের প্রসঙ্গে অ্যাকাউন্ট অনুমোদনের জন্য পপ আপ ফেলে? যদি হ্যাঁ তবে কেবলমাত্র একটি অ্যাকাউন্ট থাকা ডিভাইসের জন্য আমি কীভাবে এটিকে বাইপাস করব?
এশ্বর

14
public String getUsername() {
    AccountManager manager = AccountManager.get(this);
    Account[] accounts = manager.getAccountsByType("com.google");
    List<String> possibleEmails = new LinkedList<String>();

    for (Account account : accounts) {
        // TODO: Check possibleEmail against an email regex or treat
        // account.name as an email address only for certain account.type values.
        possibleEmails.add(account.name);
    }

    if (!possibleEmails.isEmpty() && possibleEmails.get(0) != null) {
        String email = possibleEmails.get(0);
        String[] parts = email.split("@");

        if (parts.length > 1)
            return parts[0];
    }
    return null;
}

দুর্দান্ত এবং সহজ পদ্ধতি ধন্যবাদ :)
তালহা কিউ

2
লক্ষ্য করুন এটির প্রয়োজন android.permission.GET_ACCOUNTS, যা 'বিপজ্জনক' অনুমতি হিসাবে সংজ্ঞায়িত করা হয় (রানটাইম অনুরোধের প্রয়োজন): বিকাশকারী.অ্যান্ড্রয়েড.
com

@ সাগিলো আপনি কীভাবে এটি পরিচালনা করেছেন? আমি কেবল তার ইমেল ঠিকানা প্রবেশের জন্য তাকে অলস করতে, অন্য অনুমতির জন্য ব্যবহারকারীকে জিজ্ঞাসা করতে চাই না :)
কোডবেসড

1
@ কোডবেড আমি করিনি ... যতদূর আমি জানি এটি সম্ভব নয়।
সাগিলো

2
manager.getAccountsByType ( "com.google"); Android এর পরবর্তী সংস্করণগুলির সাথে কাজ করে না।
পাউডার366

8

একটি অ্যান্ড্রয়েড এপিআই রয়েছে যা ব্যবহারকারীর অনুমতি ছাড়াই তাদের ইমেল ঠিকানা নির্বাচন করতে দেয়। এক নজরে দেখুন: https://developers.google.com / ::

HintRequest hintRequest = new HintRequest.Builder()
        .setHintPickerConfig(new CredentialPickerConfig.Builder()
                .setShowCancelButton(true)
                .build())
        .setEmailAddressIdentifierSupported(true)
        .setAccountTypes(IdentityProviders.GOOGLE)
        .build();

PendingIntent intent = mCredentialsClient.getHintPickerIntent(hintRequest);
try {
    startIntentSenderForResult(intent.getIntentSender(), RC_HINT, null, 0, 0, 0);
} catch (IntentSender.SendIntentException e) {
    Log.e(TAG, "Could not start hint picker Intent", e);
}

এটি একটি চয়নকারী দেখায় যেখানে ব্যবহারকারী কোনও ইমেল ঠিকানা নির্বাচন করতে পারে। ফলাফল বিতরণ করা হবেonActivityResult()


আমি নিশ্চিত করতে পারি যে আমি এটি ব্যবহার করতে পেরেছি, আমি খুঁজে পেয়েছি এমন একমাত্র কার্যকরী উত্তরের জন্য ধন্যবাদ
csga5000

একমাত্র কার্যকরী সমাধান, ধন্যবাদ ঘূর্ণায়মান
জুলকারনাইন ১১

7

দুঃখজনকভাবে গৃহীত উত্তর কাজ করছে না।

আমি দেরি করেছি, তবে সামগ্রীটির ইউরির সরবরাহকারীর দ্বারা পরিবর্তন না করা হলে অভ্যন্তরীণ অ্যান্ড্রয়েড ইমেল অ্যাপ্লিকেশনটির সমাধান এখানে রয়েছে:

Uri EMAIL_ACCOUNTS_DATABASE_CONTENT_URI = 
              Uri.parse("content://com.android.email.provider/account");

public ArrayList<String> GET_EMAIL_ADDRESSES ()
{
    ArrayList<String> names = new ArrayList<String>();
    ContentResolver cr      = m_context.getContentResolver();
    Cursor cursor           = cr.query(EMAIL_ACCOUNTS_DATABASE_CONTENT_URI ,null, 
                             null, null, null);

    if (cursor == null) {
        Log.e("TEST", "Cannot access email accounts database");
        return null;
    }

    if (cursor.getCount() <= 0) {
        Log.e("TEST", "No accounts");
        return null;
    }

    while (cursor.moveToNext()) {
        names.add(cursor.getString(cursor.getColumnIndex("emailAddress")));
        Log.i("TEST", cursor.getString(cursor.getColumnIndex("emailAddress")));
    }
    return names;
}

6

2

এই পদ্ধতিটি ব্যবহার করুন:

 public String getUserEmail() {
    AccountManager manager = AccountManager.get(App.getInstance());
    Account[] accounts = manager.getAccountsByType("com.google");
    List<String> possibleEmails = new LinkedList<>();
    for (Account account : accounts) {
        possibleEmails.add(account.name);
    }
    if (!possibleEmails.isEmpty() && possibleEmails.get(0) != null) {
        return possibleEmails.get(0);
    }
    return "";
}

নোট করুন যে এর GET_ACCOUNTSঅনুমতির প্রয়োজন :

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

তারপর:

editTextEmailAddress.setText(getUserEmail());

এটি কেবলমাত্র বর্তমান অ্যাপ্লিকেশনের সাথে সম্পর্কিত অ্যাকাউন্টগুলি ফেরত দেবে বলে মনে হয় - সুতরাং আমি পরীক্ষায় "কিছুই" পাই না
csga5000

ম্যানেজার.জেটএক অ্যাকাউন্টসবাইটাইপ ("com.google") অ্যান্ড্রয়েডের পরবর্তী সংস্করণগুলিতে কাজ করে না। এবং App.getInstance () কোথা থেকে এসেছে?
পাউডার366


0

অ্যান্ড্রয়েড GET_ACCOUNTSসম্প্রতি লকড হয়েছে তাই কিছু উত্তর আমার পক্ষে কাজ করে না। আপনার ব্যবহারকারীদের একটি অনুমতি ডায়ালগ সহ্য করতে হবে সেই সতর্কতার সাথে আমি Android 7.0 এ কাজ করেছি।

Andro আইডি

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

MainActivity.java

package com.example.patrick.app2;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.accounts.AccountManager;
import android.accounts.Account;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.*;

public class MainActivity extends AppCompatActivity {

    final static int requestcode = 4; //arbitrary constant less than 2^16

    private static String getEmailId(Context context) {
        AccountManager accountManager = AccountManager.get(context);
        Account[] accounts = accountManager.getAccountsByType("com.google");
        Account account;
        if (accounts.length > 0) {
            account = accounts[0];
        } else {
            return "length is zero";
        }
        return account.name;
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case requestcode:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    String emailAddr = getEmailId(getApplicationContext());
                    ShowMessage(emailAddr);

                } else {
                    ShowMessage("Permission Denied");
                }
        }
    }

    public void ShowMessage(String email)
    {
        AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
        alertDialog.setTitle("Alert");
        alertDialog.setMessage(email);
        alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        alertDialog.show();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Context context = getApplicationContext();

        if ( ContextCompat.checkSelfPermission( context, android.Manifest.permission.GET_ACCOUNTS )
                != PackageManager.PERMISSION_GRANTED )
        {
            ActivityCompat.requestPermissions( this, new String[]
                            {  android.Manifest.permission.GET_ACCOUNTS  },requestcode );
        }
        else
        {
            String possibleEmail = getEmailId(getApplicationContext());
            ShowMessage(possibleEmail);
        }
    }
}

এটি অন্যান্য উত্তরের চেয়ে আলাদা নয় এবং এটি আমার পক্ষে কাজ করে না বলে মনে হয় - এন্ড্রয়েডের নতুন সংস্করণগুলিতে এটি কেবলমাত্র অ্যাপ্লিকেশনের সাথে সম্পর্কিত অ্যাকাউন্টগুলি ফেরত দেয় এবং এর জন্য আর অনুমতি প্রয়োজন হয় না।
csga5000

0

মার্শমিলে অপারেটিং সিস্টেমে কাজ করা

    btn_click=(Button) findViewById(R.id.btn_click);

    btn_click.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0)
        {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
            {
                int permissionCheck = ContextCompat.checkSelfPermission(PermissionActivity.this,
                        android.Manifest.permission.CAMERA);
                if (permissionCheck == PackageManager.PERMISSION_GRANTED)
                {
                    //showing dialog to select image
                    String possibleEmail=null;

                     Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
                     Account[] accounts = AccountManager.get(PermissionActivity.this).getAccounts();
                     for (Account account : accounts) {
                         if (emailPattern.matcher(account.name).matches()) {
                             possibleEmail = account.name;
                             Log.e("keshav","possibleEmail"+possibleEmail);
                         }
                     }

                    Log.e("keshav","possibleEmail gjhh->"+possibleEmail);
                    Log.e("permission", "granted Marshmallow O/S");

                } else {                        ActivityCompat.requestPermissions(PermissionActivity.this,
                            new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE,
                                    android.Manifest.permission.READ_PHONE_STATE,
                                    Manifest.permission.GET_ACCOUNTS,
                                    android.Manifest.permission.CAMERA}, 1);
                }
            } else {
// Lower then Marshmallow

                    String possibleEmail=null;

                     Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
                     Account[] accounts = AccountManager.get(PermissionActivity.this).getAccounts();
                     for (Account account : accounts) {
                         if (emailPattern.matcher(account.name).matches()) {
                             possibleEmail = account.name;
                             Log.e("keshav","possibleEmail"+possibleEmail);
                     }

                    Log.e("keshav","possibleEmail gjhh->"+possibleEmail);


            }
        }
    });

<ব্যবহার-অনুমতি অ্যান্ড্রয়েড: নাম = "android.permission.GET_ACCOUNTS" />
কেশব গেরা

1
অ্যাকাউন্টগুলির উত্তরগুলি আমার পক্ষে কার্যকর হয়নি (০ টি অ্যাকাউন্ট রিটার্ন করুন) - এবং আমি নিশ্চিত করতে পারি যে একটি বোতাম কলব্যাকে কোডটি কল করা কোনও পার্থক্য রাখেনি।
csga5000

এই কোডটি কাজ করছে তবে সম্প্রতি আমার কাছে সময় সমস্যা আছে তাই দয়া করে আমাদের দিকটি দেখুন
কেশব গেরা

0

এই একক লাইনটি ম্যানিফেস্টে যুক্ত করুন ( অনুমতি হিসাবে )

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

তারপরে আপনার ক্রিয়াকলাপে এই কোডটি আটকে দিন

private ArrayList<String> getPrimaryMailId() {
    ArrayList<String> accountsList = new ArrayList<String>();
    try {
        Account[] accounts = AccountManager.get(this).getAccountsByType("com.google");
        for (Account account : accounts) {
            accountsList.add(account.name);
            Log.e("GetPrimaryMailId ", account.name);
        }
    } catch (Exception e) {
        Log.e("GetPrimaryMailId", " Exception : " + e);
    }
    return accountsList;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.