有没有什么办法来程序化地询问权限?

有没有办法在android中以编程方式询问权限? 我不想将所有权限添加到AndroidManifest.xml。 那么是否有任何对话在运行时要求权限?

Solutions Collecting From Web of "有没有什么办法来程序化地询问权限?"

不需要。用户需要在安装应用程序时获得有关权限的信息。 在运行时询问用户将是一个安全风险。

应用程序静态声明他们需要的权限,Android系统在安装应用程序时提示用户同意。 Android没有机制(在运行时)dynamic授予权限,因为这会使用户体验变得复杂,从而危害安全性。

  • Android开发人员网站 – 系统权限

直到现在,但是。

根据Android M中引入的Google新权限模型:

如果在M Preview上运行的应用程序支持新的权限模型,则用户在安装或升级应用程序时不必授予任何权限。 相反,应用程序会根据需要请求权限,系统会向用户请求权限显示一个对话框。

以下是这个新模型的关键组成部分的总结:

  • 声明权限:应用程序在清单中声明所有需要的权限,就像早期的Android平台一样。

  • 权限组:权限根据其function分为权限组。 例如,“ CONTACTS权限组包含读取和写入用户联系人和个人资料信息的权限。

  • 安装时授予的权限有限:当用户安装或更新应用程序时,系统将授予应用程序在清单中列出的属于PROTECTION_NORMAL所有权限。 例如,闹钟和互联网权限属于PROTECTION_NORMAL ,所以它们在安装时自动授予。 有关如何处理普通权限的更多信息,请参阅普通权限。 系统也可以授予应用程序签名权限,如系统组件和签名权限中所述。 在安装时不提示用户授予任何权限。
  • 用户在运行时授予权限:当应用程序请求权限时,系统向用户显示一个对话框,然后调用应用程序的callback函数来通知用户是否授予权限。 此权限模型可以更改应用程序的行为方式,以查找需要权限的function。 以下是您应该遵循的开发实践的总结,以适应此模型:

  • 总是检查权限:当应用程序需要执行任何需要权限的操作时,应该首先检查是否已经具有该权限。 如果没有,则要求获得该许可。 您不需要检查属于PROTECTION_NORMAL权限。

  • 处理缺乏权限的优雅:如果应用程序没有被授予适当的权限,它应该干净地处理失败。 例如,如果只需要添加function的权限,应用程序就可以禁用该function。 如果该权限对于应用程序的运行至关重要,则应用程序可能会禁用其所有function,并通知用户需要授予该权限。

  • 权限是可撤销的:用户可以随时撤销应用程序的权限。 如果用户closures应用程序的权限,则不会通知该应用程序。 再次,您的应用程序应该在执行任何受限制的操作之前validation它是否具有所需的权限

来源: https : //developer.android.com/preview/features/runtime-permissions.html

没有。

在这里回答: dynamic获得Android权限

请参阅此处的“使用权限”部分: http : //developer.android.com/guide/topics/security/security.html

Android M引入了运行时权限,大家一直在等待。 此外,权限现在分为NORMAL和DANGEROUS,其中NORMAL权限默认授予,并且在需要时请求“危险”权限。 此外,用户可以随时从设备的“设置”菜单中撤销“危险”权限。

如果我把“Piskvor”和“Hanno Binder”的答案结合起来,你的应用程序可以检查帮助程序是否可用(尝试用Intent调用它),如果不存在(调用失败),提示用户来安装它。

看看下面的例子。

如果不存在,如何以编程方式下载Adobe Reader