我怎样才能在Android中自定义权限对话框?

假设我在运行时请求一个权限,如下所示:

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

Android系统创build一个popup对话框来请求权限。 我怎样才能定义该对话框的自定义布局?

Solutions Collecting From Web of "我怎样才能在Android中自定义权限对话框?"

简短的回答是, 你不能

正如android文档所说:

当您的应用程序调用requestPermissions()时,系统会向用户显示一个标准对话框。 您的应用程序无法configuration或更改该对话框。 如果您需要向用户提供任何信息或解释,则应在调用requestPermissions()之前执行该操作,如“解释应用程序需要权限的原因”中所述。

因此,现在无法为权限对话框定义自定义布局。

你可以在这里find更详细的信息: http : //developer.android.com/training/permissions/requesting.html

我已经创build了自定义的权限对话框:

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

希望对你有帮助 :)

Android 6.0棉花糖。 无法写入到SD卡这个post帮助我从显示对话框授予写入外部许可