2012-01-24 26 views
17

在引入Android 3.0之前,在手機上註冊的第一個com.google帳戶是主要帳戶,也是Android Market使用的唯一帳戶。如何獲取非主要購買帳戶的電子郵件地址

在Android 3.0及更高版本的設備上,我無法再依靠此(Account[0])獲取客戶的電子郵件地址。

有沒有辦法告訴哪個帳戶com.google帳戶目前正在進行購買?

(所有我需要的是指數Account[]陣列賬戶類型com.google,我能得到的電子郵件地址,一旦我有相關的指數)

+0

你解決這個問題? – Mikky

回答

-2
import android.provider.ContactsContract; 

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

//you can set current sync account.. 

boolean syncEnabled = ContentResolver.getSyncAutomatically(accounts[0], ContactsContract.AUTHORITY); 
1

恐怕是不可能的。根據我的發現,看起來應用程序內購買的帳戶是用於安裝應用程序的帳戶,您不知道。我想可能可以從根植手機上的Play商店應用程序數據庫中讀取它。

看起來,使用Google Play Android Developer API完成購買後,甚至無法找到採購帳戶,但不確定爲什麼。

如果你有任何機會發現,請告訴我。

1

我剛剛做了一個快速谷歌搜索,並在這個網站上遇到這個here

您可以使用AccountManager.getAccountsAccountManager.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可在SDK中Contact Manager示例代碼中找到。

-1

冷杉名和姓>> java代碼?

電子郵件添加代碼

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ 
Account[] accounts = AccountManager.get(getApplicationContext()).getAccounts(); 
for (Account account : accounts) { 
    if (account.type.equals("com.google")) { 
     email = account.name.toString(); 
     break; 
    } else if (emailPattern.matcher(account.name).matches()) { 
     email = account.name.toString(); 
    } 
} 
+1

我會建議給更多的解釋。 – peterh

相關問題