【发布时间】:2018-02-22 12:32:53
【问题描述】:
当我想在编辑文本中输入电子邮件 ID 时,如何获取 Gmail 应用程序中可用的电子邮件列表?
【问题讨论】:
标签: android email android-edittext
当我想在编辑文本中输入电子邮件 ID 时,如何获取 Gmail 应用程序中可用的电子邮件列表?
【问题讨论】:
标签: android email android-edittext
你不能通过Edittext来实现,你应该使用AutoCompleteTextView
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
在 onCreate 中的 Activity 文件中
AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
String selectedEmail;
List<String> emails = new ArrayList<>();
Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
//get runtime permission
Account[] accounts = AccountManager.get(YourActivityName.this).getAccounts();
int i=0;
for (Account account : accounts) {
if (emailPattern.matcher(account.name).matches()) {
String possibleEmail = account.name+"\n";
emails.add(possibleEmail);
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(this,android.R.layout.simple_list_item_1,emails);
autoComplete.setAdapter(adapter);
//default selected email
selectedEmail = emails.get(0);
autoComplete.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// You can get the user selected email here
String selectedEmail = emails.get(position)
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
您需要在清单中添加权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
如果您正在开发 API>=23(Marshmallow),那么您还需要获得运行时权限。按照此获取运行时权限
https://developer.android.com/training/permissions/requesting.html
【讨论】: