2012-05-10 77 views
3

對於我正在開發的android應用程序,它需要創建一個配置文件來發送和接收其他用戶的內容。對於登錄過程,用戶是否可以使用手機上關聯的Gmail帳戶登錄?這將是相同的帳戶,積極使用谷歌播放。使用Gmail帳戶登錄我的應用程序?

這將使整個登錄過程非常流暢,我認爲這將是最好的情況。

非常感謝!

+0

退房這個職位,這可能是你所需要的: http://stackoverflow.com/questions/3360926/get-main-gmail-account-username-in-android-2-0,或可能是這一個:http://stackoverflow.com/questions/2112965/how-to -get最Android的設備 - 主電子郵件地址 –

回答

0

是的,這是可能的,它很簡單。在開始之前,你需要添加,一個允許你的AndroidManifest.xml

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

它可以讀取與設備關聯的賬戶。然後你在應用程序內執行以下操作:

Account[] accounts = AccountManager.get(context).getAccountsByType("com.google"); 

這將返回用戶的所有Google帳戶。在你的情況,也許你只需要電子郵件,所以這裏是一個快速靜態函數,這將使他們給你:

public static String[] getAccounts(Context context) { 
    Account[] accounts = AccountManager.get(context).getAccountsByType("com.google"); 
    String[] names = new String[accounts.length]; 

    for (int i = 0; i < accounts.length; ++i) names[i] = accounts[i].name; 

    return names; 
} 

該函數將返回設備上的所有Gmail電子郵件(谷歌帳戶)的字符串數組。

但是,如果您需要與某些Google服務進行「交談」以獲取更多信息,則必須執行以下操作。第一個多個權限添加到清單:

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

此權限將允許您的應用程序使用使用證書來識別用戶在谷歌的一些服務的前面。它不會給你的憑據(密碼)。

要使用一些Google服務,您需要一個令牌。這是一個快速的功能:

public static String getToken(Activity activity, String serviceName) { 
     try { 
      Bundle result = AccountManager.get(activity).getAuthToken(account, serviceName, null, activity, null, null).getResult(); 

      return result.getString(AccountManager.KEY_AUTHTOKEN); 
     } catch (OperationCanceledException e) { 
      Log.d("Test", "Operation Canceled"); 
     } catch (AuthenticatorException e) { 
      Log.d("Test", "Authenticator Exception"); 
     } catch (IOException e) { 
      Log.d("Test", "Auth IOException"); 
     } 

     return null; 
} 

一旦你的令牌,你只是HTTP API他們已經和大家玩的開心:-)

相關問題