Activity.requestPermissions 与 ActivityCompat.requestPermissions

Ros*_*ala 6 permissions android android-permissions runtime-permissions

Android 6.0 或更高版本中显示运行时权限对话框,因此Activity.requestPermissions(...)在 API 级别 23 中添加该对话框是有意义的。

ActivityCompat.requestPermissions(...)但为什么Android 6.0以下要使用另外一个( )呢?这是否会在较低版本中显示运行时权限请求对话框?


Com*_*are 6

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

不会。低版本没有这样的对话框。它只会调用您的onRequestPermissionsResult()方法来让您知道您拥有权限(因为根据定义,您已经拥有权限)。

有什么区别

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

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

我应该使用哪一个?

如果您的minSdkVersion年龄为 23 岁或以上,请随意使用Activity#requestPermissions()。否则,我推荐ActivityCompat.requestPermissions()