【发布时间】:2018-07-09 06:04:40
【问题描述】:
【问题讨论】:
【问题讨论】:
在您的清单文件中放入以下行。
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
然后使用下面的代码在您运行的设备中获取配置的电子邮件 ID。
Kotlin 中的代码:
private fun getEmailID() {
val listEmail: ArrayList<String> = arrayListOf()
val emailPattern = Patterns.EMAIL_ADDRESS
val accounts = AccountManager.get(this).accounts
accounts.filter { emailPattern.matcher(it.name).matches() }
.mapTo(listEmail) { it.name }
val arrayAdapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listEmail)
spinnerEmail.adapter = arrayAdapter
}
在 Java 中使用如下:
public String extractAddressFromAccountManager() {
accountList = new ArrayList<>();
Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8
Account[] accounts = AccountManager.get(this).getAccountsByType("com.google");
for (Account account : accounts) {
if (emailPattern.matcher(account.name).matches()) {
accountList.add(account.name);
//return account.name;
}
}
return null;
}
获得如下许可:
private boolean isGetAccountsPermissionAllowed() {
int result = ContextCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS);
if (result == PackageManager.PERMISSION_GRANTED)
return true;
return false;
}
如果未授予使用以下获取:
private void requestGetAccountsPermission() {
ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.GET_ACCOUNTS);
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.GET_ACCOUNTS}, GET_ACCOUNTS_PERMISSION_REQUEST_CODE);
}
【讨论】: