为什么我不能在 Android 6 上自定义权限请求对话框?

Igo*_*nov 1 android android-permissions android-6.0-marshmallow

最近在新的Android Marshmallow上遇到了很多关于权限请求对话框的问题。它们听起来像:

如何自定义 Android 权限对话框?

如何为 Android 权限对话框提供自定义文本?

为什么我不能自定义Android权限对话框?

所以这里是所有这些问题的完整答案。

Igo*_*nov 5

以下是其他类似的问题:

Android M - 自定义权限对话框样式

如何在android中自定义权限对话框?

为 Android M 权限对话框提供自定义文本

首先,您不能对 Android 权限对话框进行任何自定义,因为它是系统对话框

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

但是很多人问同样的问题——为什么?

答案很简单,因为你可以欺骗用户。我举一个例子。

  1. 如果您想提供自己的对话框以获得许可,显然您可以向用户提供有关您需要的内容的错误或误导性信息。
  2. 如果您只想为该对话框提供您自己的文本,您可以执行与上一项相同的操作。但是你可以问为什么我不能和系统一一起提供额外的信息?同样,因为您可以欺骗用户。您可以提供非常长的文本和基本信息块可以超出屏幕,或者您可以通过您自己的自定义视图找到父容器并将其隐藏。
  3. 如果您想通过系统xml样式设置此对话框的样式,您可以在白色背景上创建白色文本,例如再次欺骗用户。

并且只有那些立即出现在脑海中的变体。很明显,任何干扰都可能被用来造成伤害。