运行时权限对话框在Android6.0或更高版本中显示,因此在API23级中添加的Activity.requestPermissions(...)
是有意义的。
但是为什么在Android6.0以下还有另一个(ActivityCompat.requestPermissions(...)
)可以使用呢?在较低版本中是否显示运行时权限请求对话框?
Activity.requestPermissions(权限,requestCode)
和
activity(activity,permissions,requestCode)
(活动,权限,我应该使用哪一个?)
发布于 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()
。
发布于 2019-06-26 04:34:49
但是为什么会有另一个(ActivityCompat.requestPermissions(...))适用于Android 6.0以下版本?
它之所以存在,是因为安卓系统中有两种类型的Acvivity
,android.app.Activity
docs和android.support.v4.app.ActivityCompat
docs。
Activity
适用于SDK最低版本为14的设备,iircActivityCompat
用于向后兼容(SDK9及以上版本)。它允许您访问可支持的新功能和材料主题,而无需进行新操作系统版本为实现新功能和UI而引入的任何破坏性更改。在较低版本中是否显示运行时权限请求对话框?
不是的。Android 6.0是第一个显示运行时权限对话框的版本,因此以前的Android版本无法显示它们。这段代码实际上被以前版本的操作系统iirc忽略了。
我应该使用哪一个?
这完全取决于您所使用的Activity
类型。如果您的活动是Activity
的子项,则使用Activity.requestPermissions(permissions, requestCode)
。但是,如果您使用的是ActivityCompat
的子级,请使用ActivityCompat.requestPermissions(activity, permissions, requestCode)
。
https://stackoverflow.com/questions/56761066
复制相似问题