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

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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