79

コードでユーザーのGoogleアカウントID/ユーザー名にアクセスするにはどうすればよいですか?Webサービスを呼び出してデータを保存するアプリケーションを構築していますが、データを送信する人のIDを特定したいと思います。

4

7 に答える 7

47

私は同じ問題に遭遇し、これらの2つのリンクが解決しました:

最初のものはこれです: Android フォンでログインした Google アカウントを取得するにはどうすればよいですか?

これは、電話に関連付けられたアカウントを取得するためのコードを示しています。基本的に、次のようなものが必要になります。

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

AndroidManifest.xml にアクセス許可を追加するには

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

さらに、エミュレーターを使用している場合は、次のリンクを使用してアカウントをセットアップすることができます: Android エミュレーター - ユーザー アカウントの作成に関する問題

基本的に、SDK バージョンではなく API レベルに基づいて Android デバイスを作成する必要があると書かれています (通常行われているように)。

于 2011-09-10T14:04:09.043 に答える
10

Google ユーザー名を取得するこのメソッド:

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

    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);
    }

    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;
}

シンプルなこのメソッド呼び出し ....

そして、Gmail id で Google ユーザーを取得します::

 accounts = AccountManager.get(this).getAccounts();
    Log.e("", "Size: " + accounts.length);
    for (Account account : accounts) {

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

        if (type.equals("com.google")) {
            strGmail = possibleEmail;

            Log.e("", "Emails: " + strGmail);
            break;
        }
    }

マニフェストに許可を追加した後。

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

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
于 2014-08-11T10:34:32.080 に答える
2
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
  Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
  String userid=currentPerson.getId(); //BY THIS CODE YOU CAN GET CURRENT LOGIN USER ID
}
于 2015-09-16T05:38:46.207 に答える
2

これらの行を使用しました:

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

配列勘定の長さは常に 0 です。

于 2018-04-09T14:33:32.267 に答える