[英]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.