Choosing email from device accounts should be done by AccountPicker.
Steps:
1. Add below dependency in app/build.gradle
dependencies { implementation 'com.google.android.gms:play-services-base:17.1.0' }
2. In MainActivity.java
import android.accounts.AccountManager;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.common.AccountPicker;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = MainActivity.class.getSimpleName();
private static final int REQUEST_CODE_PICK_ACCOUNT = 101;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.pick_email).setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.pick_email) {
getUserAccounts();
}
}
private void getUserAccounts() {
Intent intent = AccountPicker.newChooseAccountIntent(null, null,
null, false, null, null, null, null);
startActivityForResult(intent, REQUEST_CODE_PICK_ACCOUNT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_PICK_ACCOUNT && data != null) {
if (resultCode == RESULT_OK) {
Log.i(TAG, "Account Type: " + data.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE));
Log.i(TAG, "Account Name: " + data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME));
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Cancelled. Please try again", Toast.LENGTH_LONG).show();
}
}
}
}
In Logcat: I/MainActivity: Account Type: com.google I/MainActivity: Account Name: abcd@gmail.com
References:
https://stackoverflow.com/questions/22174259/pick-an-email-using-accountpicker-newchooseaccountintent
https://developers.google.com/android/reference/com/google/android/gms/common/AccountPicker