2013-09-04 3 views

답변

8

내 지식에 따라 사용자는 자신의 Android 계정에 Gmail 계정을 구성해야하며 Google Play에 액세스 할 수 있습니다. (Jim Blackler에서) 아래로

당신은 계정 정보를 가져올 수 :

import android.accounts.Account; 
import android.accounts.AccountManager; 
import android.content.Context; 

/** 
* This class uses the AccountManager to get the primary email address of the 
* current user. 
*/ 
public class UserEmailFetcher { 

    static String getEmail(Context context) { 
     AccountManager accountManager = AccountManager.get(context); 
     Account account = getAccount(accountManager); 

     if (account == null) { 
      return null; 
     } else { 
      return account.name; 
     } 
    } 

    private static Account getAccount(AccountManager accountManager) { 
     Account[] accounts = accountManager.getAccountsByType("com.google"); 
     Account account; 
     if (accounts.length > 0) { 
      account = accounts[0];  
     } else { 
      account = null; 
     } 
     return account; 
    } 
} 

매니페스트

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

참고 : 사용자가 권한 (사용자가 "연락처"권한 그룹에 직면 한 부분)에 명시 적으로 권한을 부여하지 않은 경우 FYI Android 6.0 이상에서는 안정적으로 작동하지 않습니다. 전자 메일 주소를 검색하는 다른 방법은 아래의 내 대답을 참조하십시오. –

4

당신이 필요로하지 않는 방법 후 경우 을 통해 권한을 요청하면 Google Play 서비스의 AccountPicker을 사용할 수 있습니다.

스폰 사용자가 원하는 Google 계정 선택할 수있는 대화 :

Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[]{"com.google"}, false, null, null, null, null); 
startActivityForResult(intent, SOME_REQUEST_CODE); 

은 다음 Activity에 결과를 핸들 :

protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
    if (requestCode == SOME_REQUEST_CODE && resultCode == RESULT_OK) { 
     String emailAddress = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 
     // do something... 
    } 
} 

당신의 build.gradle의 종속성 compile 'com.google.android.gms:play-services-identity:8.+'을 추가해야합니다 파일 (사용할 최신 버전 번호는 here을 확인하십시오).