Android 我有这个代码从设备中获取gmail id,但它在6.0及以上版本中不起作用
我正在尝试从设备自动获取主Hmail id,但它仅在5.0及以下版本中工作,在6.0及以上版本中不工作 我的代码是:Android 我有这个代码从设备中获取gmail id,但它在6.0及以上版本中不起作用,android,Android,我正在尝试从设备自动获取主Hmail id,但它仅在5.0及以下版本中工作,在6.0及以上版本中不工作 我的代码是: private TextView text; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewBy
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;
}
您需要将“获取帐户”权限添加到清单。如果您已经这样做了,那么您需要为Android 6.0棉花糖添加运行时权限Manifest.permission.GET_帐户,以获取Google帐户和gmail id 首先请求获得帐户的权限,然后在onRequestPermissionsResult中运行您的方法getEmail以获取gmail id
快乐编码 请管理棉花糖所需的运行时权限。像这样 首先在活动中声明两个变量
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();
}
}
}
非常感谢您,但第一次它没有显示任何内容,当我打开应用程序第二次它显示gmail id.bcz时,您没有以正确的方式维护权限,这意味着在onRequestPermissionsResult()方法中,如果条件为真,则应用gmail帐户逻辑。如果在使用我的代码时比之后有任何帮助,请向上投票并按正确答案。好的,我更新我的ans,你可以很容易理解。