2016-08-10 16 views
1

基本的には、ユーザーが希望するメールIDを選択するオプションをユーザーに与えたいと思っています。私は連絡先にユーザーからの許可を求めません。アカウントの許可はユーザーには問題ありません。私はanswer at stackoverflowを試しましたが、それは私のために働いていません。それを得る他の方法はありますか?Androidの登録済みメールアカウントをすべて取得する

がマニフェストにこの権限を追加します:

私が試してみました何

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

をし、Googleは次のようにアカウントリクエスト:Googleは、このようにアカウント

Account[] accounts = AccountManager.get(this).getAccountsByType("com.google"); 
for (Account account : accounts) { 
    Log.d(TAG, "Found: " + account.name); 
} 
+0

このリンクにアクセスしましたか:http://androidexample.com/Get_Registered_Email_Accounts_-_Android_Example/index.php?view=article_discription&aid=110? – LychmanIT

+0

はい。それも機能していません。 – impossible

答えて

1

この方法で試すことができます。これは基本的に、デバイスにログインしているすべての登録済み電子メールをポップアップ表示します。

Button btnEmail = (Button) findViewById(R.id.btn_email); 
btnEmail.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       try { 
        Intent intent = AccountPicker.newChooseAccountIntent(null, null, 
          new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, false, null, null, null, null); 
        startActivityForResult(intent, REQUEST_CODE_EMAIL); 
       } catch (ActivityNotFoundException e) { 
        // TODO: 
        Toast.makeText(Login.this, "Error: " + e, Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK) { 
      userEmail = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 
      btnEmail.setText(userEmail); 
      email_OK = true; 
     } 
    } 

この機能が動作しない場合は、教えてください。

+0

ありがとうございます。それはうまくいった!私は、アンドロイドのドキュメントは、この情報で更新する必要がありますね。 – impossible

0

要求:

Pattern emailPattern = Patterns.EMAIL_ADDRESS; 
Account[] accounts = AccountManager.get(context).getAccounts(); 
for (Account account : accounts) { 
    if (emailPattern.matcher(account.name).matches()) { 
     String emailAccount = account.name; 
    } 
} 
+0

働いていません。 – impossible

0

マニフェストにuses-permission行があることに加えて、アプリケーションのインストール時にそのアクセス許可を付与する必要があります。新しいデバイスをお持ちの場合は、オフになっている可能性があります。設定でアプリの権限を確認します。それは私にとってこの問題を解決しました。

関連する問題