В onCreate() моей деятельности я проверяю разрешения.
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
}
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CHECK_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1);
}
Для каждого разрешения в методе обратного вызова я выполняю определенные задачи. Поэтому я не могу запрашивать разрешения в массиве, например
String[] permissions { };
так как он предоставит мне только один обратный вызов для всех разрешений. Я выполняю задачи в каждом обратном вызове следующим образом.
case ConstantClass.READ_PERMISSION:
if (grantResults.length > 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {
doSomething();
Toast.makeText(MainActivity.this, getResources().getString(R.string.Cannot_Vibrate_Phone), Toast.LENGTH_LONG).show();
}
break;
case ConstantClass.CALL_PERMISSION:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
dialPhoneNumber();
} else {
Toast.makeText(MainActivity.this, getString(R.string.permission_access_call), Toast.LENGTH_LONG).show();
}
break;
Если я запрошу эти разрешения одно за другим в onCreate(). Отображается только первое разрешение. Поэтому у меня работает только один обратный вызов. Итак, как добиться сценария, чтобы для каждого отдельного разрешения я получал отдельный обратный вызов и вызывал в них некоторые функции. Спасибо :)