有没有办法以编程方式提出许可?

Ade*_*dem 23 java permissions android

有没有办法在android中以编程方式请求权限?我不想为AndroidManifest.xml添加所有权限.那么有没有在运行时请求权限的对话框?

Nat*_*ate 14

应用程序静态声明它们所需的权限,Android系统在安装应用程序时提示用户同意.Android没有动态(在运行时)授予权限的机制,因为它使用户体验复杂化而不利于安全性.

  • 我想知道时间变化如此之快,它可能会使用户体验在2011年变得复杂,但在2015年却没有;) (2认同)
  • @ ay89他们实在太懒了:) (2认同)

Dan*_*vak 8

不需要.在安装应用程序时,需要通知用户有关权限的信息.在运行时询问用户将存在安全风险.

  • @Piskvor这些用户也会在安装时点击警告.所以我不知道风险如何大于安装时间警告. (24认同)
  • "在运行时询问它们会带来安全风险." 怎么会这样?我看到的唯一危险就是点击劫持,这可以通过倒计时轻松防止. (6认同)
  • 我根本没有看到安全风险.这与在安装时验证它没有什么不同.这是Symbian和Blackberry10的逻辑,它们显然是具有更好安全性的平台 (4认同)
  • @CodeInChaos:"容易被阻止"?你低估了"点击可怕的安全警告看有趣的视频"的力量. (3认同)

Mac*_*ado 8

直到现在,但是是的.

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

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

以下是这个新模型的关键组件的摘要:

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

  • 权限组:权限根据其功能划分为权限组.例如,CONTACTS权限组包含读取和写入用户的联系人和配置文件信息的权限.

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

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

  • 正确处理缺乏权限:如果应用程序未获得适当的许可,则应该干净地处理故障.例如,如果添加的功能仅需要权限,则应用可以禁用该功能.如果权限对于应用程序运行至关重要,则应用程序可能会禁用其所有功能,并通知用户他们需要授予该权限.

  • 权限是可撤销的:用户可以随时撤消应用的权限.如果用户关闭了应用的权限,则不会通知应用.再一次,您的应用应该在执行任何受限操作之前验证它是否具有所需权限.

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


Eri*_*ric 7

没有.

在这里回答:动态获取Android权限

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