Подтвердить что ты не робот

Как я могу настроить диалог разрешений в Android?

Предположим, я запрашиваю разрешение во время выполнения, как показано ниже:

ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.READ_CONTACTS},
            MY_PERMISSIONS_REQUEST_READ_CONTACTS);

Система Android создает всплывающее диалоговое окно для запроса разрешения. Как я могу определить пользовательский макет для этого диалога?

4b9b3361

Ответ 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;
}

Надеюсь, это поможет вам:)