android - एंड्रॉइड फोन पर लॉग इन Google खाते को मैं कैसे पुनर्प्राप्त करूं?




accountmanager (2)

मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं और मुझे फोन पर इस्तेमाल किए गए Google खाते को पुनः प्राप्त करने की आवश्यकता है। मैं इसे सी 2 डीएम के लिए करना चाहता हूं, लेकिन मैं उपयोगकर्ता से अपने Google ईमेल खाते में प्रवेश नहीं करना चाहता हूं अगर वे पहले से लॉग इन हैं। क्या ऐसा करने का कोई तरीका है?


इस तरह कुछ काम करना चाहिए:

AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
String gmail = null;

for(Account account: list)
{
    if(account.type.equalsIgnoreCase("com.google"))
    {
        gmail = account.name;
        break;
    }
}

और आपको अपने मैनिफेस्ट में निम्नलिखित अनुमति की आवश्यकता होगी:

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

यदि आप एंड्रॉइड 6 और बाद में https://developer.android.com/training/permissions/requesting.html समर्थन करते हैं तो 'रन टाइम पर अनुमतियों का अनुरोध करना' याद रखें

मैंने इसे स्मृति से लिखा है, इसलिए इसे थोड़ा tweaking की आवश्यकता हो सकती है। जाहिर है, अब ईमेल पते के बिना पंजीकरण करना संभव है, इसलिए यह सुनिश्चित करने के लिए डेटा पर कुछ regexing कर सकते हैं कि यह वास्तव में एक ईमेल पता है (सुनिश्चित करें कि इसमें @gmail या @googlemail शामिल है)


मैंने ईमेल पता और उपयोगकर्ता नाम प्राप्त करने के लिए दायरे से नीचे प्रयास किया है

अपने मोबाइल में Google खाता प्राप्त करें

 public String getMailId() {
        String strGmail = null;
        try {
            Account[] accounts = AccountManager.get(this).getAccounts();
            Log.e("PIKLOG", "Size: " + accounts.length);
            for (Account account : accounts) {

                String possibleEmail = account.name;
                String type = account.type;

                if (type.equals("com.google")) {

                    strGmail = possibleEmail;
                    Log.e("PIKLOG", "Emails: " + strGmail);
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
             strGmail = null;
        }

        return strGmail;
    }

अपने मोबाइल में Google खाते का उपयोगकर्ता नाम प्राप्त करें

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

        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);
        }
    } catch (Exception e) {
        e.printStackTrace();
        if (possibleEmails != null) {
            possibleEmails.clear();
        }
    }

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

            } else {
                return null;
            }
        } else {
            return null;
        }
    } else {
        return null;
    }
}

अपनी मेनफेस्ट फ़ाइल में अनुमतियां घोषित करें।

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




accountmanager