ActivityCompat.requestPermissions снова не отображал диалоговое окно разрешений после двухкратного отказаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 ActivityCompat.requestPermissions снова не отображал диалоговое окно разрешений после двухкратного отказа

Сообщение Anonymous »

Я пытался обрабатывать несколько разрешений Android с помощью Java. Я использую функцию checkPermissions следующим образом:

Код: Выделить всё

public void checkPermissions() { //Suppose I trying Android 14 version, SDK 34
...
if (Build.VERSION.SDK_INT > 32){
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(Manifest.permission.READ_MEDIA_AUDIO) != PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.READ_MEDIA_AUDIO,
Manifest.permission.BLUETOOTH_CONNECT,
Manifest.permission.BLUETOOTH_SCAN
}, 1);
} else {
isPermissionGranted = true;
return;
}
}
...
}
а затем продолжает onRequestPermissionsResult

Код: Выделить всё

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 1:
...
else if (Build.VERSION.SDK_INT > 32){

if (grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED
&& grantResults[2] == PackageManager.PERMISSION_GRANTED
&& grantResults[3] == PackageManager.PERMISSION_GRANTED
&& grantResults[4] == PackageManager.PERMISSION_GRANTED) {

isPermissionGranted = true;
Log.e("permission","isPermissionGranted, onRequestPermissionsResult SDK INT " + Build.VERSION.SDK_INT + " : " +isPermissionGranted);
setBluetoothConnection(mBluetoothAdapter);
}
else {
isPermissionGranted = false;
showNeedPermissionsDialog();
Log.e("permission","isPermissionGranted, onRequestPermissionsResult SDK INT " + Build.VERSION.SDK_INT + " : " +isPermissionGranted);
}
}
break;
...
}
}
Если пользователю отказано, продолжает отображаться функция PermissionDialog и нажмите кнопку btnClose, чтобы закрыть приложение.

Код: Выделить всё

private void showPermissionDialog() {
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog_permission_needed);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setCancelable(false);

Button btnClose = (Button) dialog.findViewById(R.id.btnClose);

btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
finish();
}
});
dialog.show();
}
Проблема в том, что после того, как я закрываю приложение и открываю его снова, когда дважды отказывал в разрешении, диалоговое окно разрешений Android не отображается (не функция showPermissionDialog). Итак, почему он не отображается после отказа 2 раза? И как мне решить эту проблему?
Примечание. Если это возможно, не используйте настройки намерений для утверждения разрешений.

Подробнее здесь: https://stackoverflow.com/questions/790 ... after-deny
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»