android賬戶取得方法:
1. 8.0以下動態申請運行時權限 Manifest.permission.GET_ACCOUNTS
獲取權限後取得賬戶的方法:
你可以用AccountManager.getAccounts or AccountManager.getAccountsByType來獲取賬戶列表
代碼如下所示:
Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(context).getAccounts();
for (Account account : accounts) {
if (emailPattern.matcher(account.name).matches()) {
String accountName = account.name;
String accountType = account.type;
System.out.println("name:" + accountName + "\n" + "type:" + accountType);
}
}
上面代碼略顯重複,還可以這樣寫:
Account[] accounts = AccountManager.get(this).getAccountsByType("com.android.email");
注意:AccountManager.getAccounts()
獲得手機中所有賬戶信息,除了郵件賬戶也包括微博等其他類型的賬號。
2. 8.0以上(包含8.0)動態申請運行時權限 Manifest.permission.GET_ACCOUNTS
獲取權限後取得賬戶的方法:
Intent intent = AccountManager.newChooseAccountIntent(null, null, new String[]{"com.android.email"},
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);
LogUtil.e("lzx","onActivityResult ");
if (requestCode == REQUEST_CODE_PICK_ACCOUNT && resultCode == RESULT_OK) {
// Receiving a result from the AccountPicker
LogUtil.e(TAG,"KEY_ACCOUNT_NAME " + data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME));
LogUtil.e(TAG,"KEY_ACCOUNT_TYPE " + data.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE));
Account[] accounts = AccountManager.get(this).getAccountsByType("com.android.email");
LogUtil.e(TAG,"accounts lenth " + accounts.length );
}
}