[英]My app Does not ask at the first time for the runtime permission for the marshmallow?
我为送餐制作了一个应用程序。 在我的应用程序中,当用户使用Android手机版本的棉花糖时,我的应用程序不会在第一时间要求读取短信的许可。 但是当用户下次打开应用程序时,我的应用程序会请求许可。 我不知道是什么问题。 我希望当用户第一次打开应用程序时,应该询问权限,而不是第二次。
这是我请求权限的方法,我在Activity的onCreate()
方法中调用此方法:
private void permissionForMarshMallow() {
int permissionCheck = ContextCompat.checkSelfPermission(LoginActivity.this,
Manifest.permission.READ_SMS);
if (ContextCompat.checkSelfPermission(LoginActivity.this,
Manifest.permission.READ_SMS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(LoginActivity.this,
Manifest.permission.READ_SMS)) {
Log.e("permission...granted", "permission granted............");
} else {
ActivityCompat.requestPermissions(LoginActivity.this,
new String[]{Manifest.permission.READ_SMS},
REQUEST_CODE_ASK_SINGLE_PERMISSION);
}
}
}
这是重写方法onRequestPermissionsResult()
:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_SINGLE_PERMISSION:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
// Toast.makeText(LoginActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
谁能告诉我如何使应用程序在第一次而不是第二次请求许可?
您的代码中存在逻辑缺陷。 这是您的代码运行方式:
因此,基本上,您是在不需要的时候请求许可。 在您应该请求许可的情况下,只需记录“已授予许可”,而不是请求许可。 您只需要稍微更改一下代码即可:
private void permissionForMarshmallow() {
int permissionCheck = ContextCompat.checkSelfPermission(LoginActivity.this, Manifest.permission.READ_SMS);
if (ContextCompat.checkSelfPermission(LoginActivity.this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(LoginActivity.this, new String[]{Manifest.permission.READ_SMS}, REQUEST_CODE_ASK_SINGLE_PERMISSION);
}
else {
// user probably checked "never ask again" - we should not ask for permission.
}
}
}
看起来像第一次启动时,ShowShowRequestPermissionRationale为true,您只需创建一个日志条目。 您已将其写入日志中,但在这种情况下,尚未授予该权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.