Как я могу получить активную учетную запись facebook с устройства?

Я использую эту часть кода, но она возвращает null.

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
accounts = AccountManager.get(Login.this).getAccountsByType("com.facebook");
String possibleEmail;

for (Account account : accounts) 
{
    if (emailPattern.matcher(account.name).matches()) 
    {
        possibleEmail = account.name;
        Log.e("Email", possibleEmail);
    }
}

Но это работает для ("com.google").


person user3326573    schedule 19.02.2014    source источник


Ответы (1)


Лучше распечатать все типы и посмотреть, что нужно использовать для доступа, так как извлечение их по имени типа должно быть точным совпадением.

    Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+

    AccountManager acMng = AccountManager.get(this.getApplicationContext());
    if(acMng!=null) {           

    Account[] accounts = acMng.getAccounts();
    String possibleEmail;

    if(accounts!= null) {
    for (Account account : accounts) 
    {
         Log.e(( account.name , account.type );
        if (emailPattern.matcher(account.name).matches()) 
        {
            possibleEmail = account.name;
            Log.e(("Email :",  possibleEmail);
        }
    }
    }

Как и в моем тестовом устройстве, тип устройства для facebook -- com.facebook.auth.login.

Итак, я думаю, что это должно быть:

 accounts = AccountManager.get(Login.this).getAccountsByType("com.facebook.auth.login");
person Neha    schedule 19.02.2014
comment
@Neha Мадам Пожалуйста, проверьте эту ссылку stackoverflow.com/questions/22481360/ - person ; 18.03.2014