首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Activity.requestPermissions vs ActivityCompat.requestPermissions

Activity.requestPermissions vs ActivityCompat.requestPermissions
EN

Stack Overflow用户
提问于 2019-06-26 03:47:26
回答 2查看 1.8K关注 0票数 4

运行时权限对话框在Android6.0或更高版本中显示,因此在API23级中添加的Activity.requestPermissions(...)是有意义的。

但是为什么在Android6.0以下还有另一个(ActivityCompat.requestPermissions(...))可以使用呢?在较低版本中是否显示运行时权限请求对话框?

  • 两者的区别是什么

Activity.requestPermissions(权限,requestCode)

activity(activity,permissions,requestCode)

  • Which one I ActivityCompat.requestPermissions?

(活动,权限,我应该使用哪一个?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 04:02:16

在较低版本中是否显示运行时权限请求对话框?

不是的。在较低版本中没有这样的对话框。它将简单地调用您的onRequestPermissionsResult()方法,让您知道您拥有权限(因为根据定义,您已经拥有权限了)。

这两者有什么区别

Activity#requestPermissions()适用于minSdkVersion为23或更高的应用程序,或者其开发人员喜欢调用if (Build.VERSION.SDK_INT >= 23)以避免在旧设备上调用的应用程序。

ActivityCompat.requestPermissions()适用于任何应用程序,因为它在所有支持的应用程序接口级别上都“做了正确的事情”(回到API14IIRC)。

我应该使用哪一个?

如果您的minSdkVersion是23或更高,请随意使用Activity#requestPermissions()。否则,我推荐使用ActivityCompat.requestPermissions()

票数 4
EN

Stack Overflow用户

发布于 2019-06-26 04:34:49

但是为什么会有另一个(ActivityCompat.requestPermissions(...))适用于Android 6.0以下版本?

它之所以存在,是因为安卓系统中有两种类型的Acvivityandroid.app.Activity docsandroid.support.v4.app.ActivityCompatdocs

  • Activity适用于SDK最低版本为14的设备,iirc
  • ActivityCompat用于向后兼容(SDK9及以上版本)。它允许您访问可支持的新功能和材料主题,而无需进行新操作系统版本为实现新功能和UI而引入的任何破坏性更改。

在较低版本中是否显示运行时权限请求对话框?

不是的。Android 6.0是第一个显示运行时权限对话框的版本,因此以前的Android版本无法显示它们。这段代码实际上被以前版本的操作系统iirc忽略了。

我应该使用哪一个?

这完全取决于您所使用的Activity类型。如果您的活动是Activity的子项,则使用Activity.requestPermissions(permissions, requestCode)。但是,如果您使用的是ActivityCompat的子级,请使用ActivityCompat.requestPermissions(activity, permissions, requestCode)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56761066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档