Код: Выделить всё
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;
}
}
...
}
Код: Выделить всё
@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;
...
}
}
Код: Выделить всё
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();
}
Примечание. Если это возможно, не используйте настройки намерений для утверждения разрешений.
Подробнее здесь: https://stackoverflow.com/questions/790 ... after-deny