您需要爲Android 6.0棉花糖添加運行時權限。這是工作代碼。
//檢查我的測試手機操作系統版本,它是棉花糖。在onCreate方法中使用這個。
private static final int REQUEST_GET_ACCOUNT = 112;
if(android.os.Build.VERSION.SDK_INT > 22){
if(isGETACCOUNTSAllowed()){
// do your task
getMailAddress();
return;
}else{
requestGET_ACCOUNTSPermission();
}
}
//檢查你是否已經獲得了棉花糖的運行時權限。
private boolean isGETACCOUNTSAllowed() {
//Getting the permission status
int result = ContextCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS);
//If permission is granted returning true
if (result == PackageManager.PERMISSION_GRANTED)
return true;
//If permission is not granted returning false
return false;
}
//if you don't have the permission then Requesting for permission
private void requestGET_ACCOUNTSPermission(){
if (ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.GET_ACCOUNTS)){
}
//And finally ask for the permission
ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.GET_ACCOUNTS},REQUEST_GET_ACCOUNT);
}
//最後檢查onRequestPermissionsResult @Override方法檢查用戶是否允許或不允許。如果允許則可能電子郵件是您的郵件地址。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//Checking the request code of our request
if(requestCode == REQUEST_GET_ACCOUNT){
//If permission is granted
if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this,"Thanks You For Permission Granted ",Toast.LENGTH_LONG).show();
getMailAddress();
}else{
//Displaying another toast if permission is not granted
Toast.makeText(this,"Oops you just denied the permission",Toast.LENGTH_LONG).show();
}
}
}
public void getMailAddress(){
String possibleEmail = null;
Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(context).getAccountsByType(
"com.google");
for (Account account : accounts) {
if (emailPattern.matcher(account.name).matches()) {
possibleEmail = account.name;
Log.i("MY_EMAIL_count", "" + possibleEmail);
}
}
}
我是否需要任何運行權限..? –
是的,你做! '<使用權限android:name =「android.permission.GET_ACCOUNTS」/>' –
沒有工作。我認爲@RubinNellikunnathu是正確的。因爲它不是RT,因此上面的行不起作用。 – VVB