我正在尝试自动从设备获取主要Hmail ID,但它仅在5.0及以下版本中运行,不适用于6.0及以上版本。
我的代码是:
private TextView text;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.text);
String email=getEmail(this);
if(email !=null)
{
text.setText(email);
}
else {
text.setText("Account not found");
}
}
static String getEmail(Context context) {
AccountManager accountManager = AccountManager.get(context);
Account account = getAccount(accountManager);
if(account==null)
{
return null;
}
else
{
return account.name;
}
}
private static Account getAccount(AccountManager accountManager)
{
Account[] accounts=accountManager.getAccountsByType("com.google");
Account account;
if(accounts.length>0)
{
account=accounts[0];
}
else {
account=null;
}
return account;
}
答案 0 :(得分:0)
您需要为清单添加获取帐户权限。如果您已经这样做了,则需要为Android 6.0 marshmallow添加运行时权限Manifest.permission.GET_ACCOUNTS以获取Google帐户和Gmail帐号。
首先请求获取帐户的权限,然后在onRequestPermissionsResult中运行您的方法getEmail以获取gmail ID。
快乐编码!!
答案 1 :(得分:0)
请管理marshmallow所需的运行时权限。喜欢这个
首先在活动中声明两个变量
private static final int REQUEST_CODE_PERMISSION = 1;
String mPermission = Manifest.permission.GET_ACCOUNTS;
在onCreate方法之后
private void getPermission() {
if(Build.VERSION.SDK_INT>= 23) {
if (checkSelfPermission(mPermission) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{mPermission,
},
REQUEST_CODE_PERMISSION);
return;
}
else
{
methodGetGmailAccont();
}
}
}
private void methodGetGmailAccont() {
/* here your logic to get account */
}
覆盖onRequestPermissionsResult方法之后
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Log.e("Req Code", "" + requestCode);
if (requestCode == REQUEST_CODE_PERMISSION) {
if (grantResults.length == 1 &&
grantResults[0] == MockPackageManager.PERMISSION_GRANTED ) {
/* here permission approve so we called our logic */
methodGetGmailAccont()
}
else{
/* here user deny permission,again called method to get permission */
getPermission();
}
}
}