Я новичок в Android, и был бы признателен за любую помощь. В основном в androidx.fragment.app.Fragment
после вызова requestPermissions()
, onRequestPermissionsResult()
никогда не вызывается.
Я читаю по другому вопросу ( onRequestPermissionsResult не вызывается во фрагменте, если он определен как во фрагменте, так и в операции )что ActivityCompat.requestPermissions
приведет к вызову метода действия onRequestPermissionsResult
. и простой requestPermissions
вызовет onRequestPermissionsResult
в том же фрагменте. Я пробовал оба способа, но каждый раз, когда вызывается метод действия, я думаю, может быть, потому что это не фрагмент поддержки v4, а androidx.fragment.app.Fragment
.
Я пытался переопределить onRequestPermissionsResult
в действии и вызвал метод super, нометод все еще фрагмента не вызывается.
private final String[] REQUIRED_PERMISSIONS = new String[]{"android.permission.CAMERA", "android.permission.WRITE_EXTERNAL_STORAGE"};
private int REQUEST_CODE_PERMISSIONS = 10;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setupTimeOut();
if (allPermissionsGranted()) {
// Do stuff that requires permission
} else {
requestPermissions(REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_CODE_PERMISSIONS) {
if (allPermissionsGranted()) {
// Do stuff that requires permission
} else {
Toast.makeText(getViewContext(), "Permissions not granted", Toast.LENGTH_SHORT).show();
}
}
}
private boolean allPermissionsGranted() {
//check if req permissions have been granted
for (String permission : REQUIRED_PERMISSIONS) {
if (ContextCompat.checkSelfPermission(getViewContext(), permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
что я хочу, чтобы получить обратный вызов результата разрешений в том же фрагменте. В случае, если это уместно, разрешения для камеры и записи во внешнее хранилище, а фрагмент представляет собой простой фрагмент захвата фотографий.