Как я могу настроить диалог разрешений в Android?
Предположим, я запрашиваю разрешение во время выполнения, как показано ниже:
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
Система Android создает всплывающее диалоговое окно для запроса разрешения. Как я могу определить пользовательский макет для этого диалога?
Ответы
Ответ 1
Короткий ответ: вы не можете.
Как указано в документации по android:
Когда ваше приложение вызывает requestPermissions(), система показывает стандартное диалоговое окно для пользователя. Приложение не может настроить или изменить это диалоговое окно. Если вам нужно предоставить какую-либо информацию или объяснение пользователю, вы должны сделать это до того, как вы вызове requestPermissions(), как описано в "Объясните, почему приложение нуждается в разрешениях".
Таким образом, пока нет возможности определить пользовательский макет для диалогового окна разрешения.
Вы можете найти более подробную информацию здесь: http://developer.android.com/training/permissions/requesting.html
Ответ 2
У меня есть пользовательский диалог для разрешения:
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
alertBuilder.setCancelable(true);
alertBuilder.setTitle("Permission necessary");
alertBuilder.setMessage("External storage permission is necessary");
alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);}});
AlertDialog alert = alertBuilder.create();
alert.show();
} else {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);}
return false;}
else {
return true;
}
Надеюсь, это поможет вам:)
Ответ 3
Android 6.0 Marshmallow. Невозможно записать на SD-карту этот пост помог мне показать диалог, чтобы предоставить запись на внешнее разрешение