web-dev-qa-db-ja.com

Androidで許可ダイアログをカスタマイズするにはどうすればよいですか?

実行時に次のような許可を要求するとします。

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

Androidシステムは、許可を要求するポップアップダイアログを作成します。そのダイアログのカスタムレイアウトを定義するにはどうすればよいですか?

28
nullpointer

簡単な答えは、できません

As Android documentation puts:

アプリがrequestPermissions()を呼び出すと、システムは標準のダイアログボックスをユーザーに表示します。アプリはcannotそのダイアログボックスを構成または変更できません。ユーザーに情報や説明を提供する必要がある場合は、「アプリに権限が必要な理由の説明」で説明されているように、requestPermissions()を呼び出す前にそれを行う必要があります。

したがって、現時点では、権限ダイアログのカスタムレイアウトを定義する方法はありません。

より詳細な情報はこちらにあります: http://developer.Android.com/training/permissions/requesting.html

46
yrazlik

私は許可のためにカスタムダイアログを作成しました:

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;
}

これがあなたを助けることを願っています:)

18
Anand Savjani

Android 6.0Marshmallow。SDカードに書き込むことができません この投稿は、外部への書き込み許可を与えるダイアログを表示するのを助けてくれました

0
Bharath