Activity.requestPermissions 对比 ActivityCompat.requestPermissions
Activity.requestPermissions vs ActivityCompat.requestPermissions
运行时权限对话框显示在 Android 6.0 或更高版本中,因此 API 级别 23 中添加的 Activity.requestPermissions(...)
有意义。
但是为什么Android 6.0以下还有一个(ActivityCompat.requestPermissions(...)
)?这会在较低版本中显示运行时权限请求对话框吗?
和
有什么区别
Activity.requestPermissions(permissions, requestCode)
和
ActivityCompat.requestPermissions(activity, permissions, requestCode)
我应该使用哪一个?
Does this show runtime permission request dialog in lower versions?
没有。低版本没有这样的对话框。它只会调用您的 onRequestPermissionsResult()
方法让您知道您拥有权限(因为根据定义,您已经拥有)。
What is the difference between
Activity#requestPermissions()
适用于 minSdkVersion
为 23 或更高的应用,或者适用于开发人员喜欢调用 if (Build.VERSION.SDK_INT >= 23)
以避免在旧设备上调用该调用的应用。
ActivityCompat.requestPermissions()
适用于任何应用程序,因为它 "does the right thing" 在所有支持的 API 级别上(回到 API 级别 14 IIRC)。
Which one should I use?
如果您的 minSdkVersion
为 23 或更高,请随意使用 Activity#requestPermissions()
。否则,我推荐ActivityCompat.requestPermissions()
。
But why is there another one (ActivityCompat.requestPermissions(...)) to be used for below Android 6.0?
存在是因为Android、android.app.Activity
、docs, and android.support.v4.app.ActivityCompat
docs、
中有两种Acvivity
Activity
用于最低SDK版本为14 iirc 的设备
ActivityCompat
是为了向后兼容(SDK 9 及更高版本)。它允许您访问可支持的新功能和 Material 主题,而无需任何新 OS 版本为实现新功能和 UI. 而引入的重大更改。
Does this show runtime permission request dialog in lower versions?
没有。 Android 6.0 是第一个显示运行时权限对话框的版本,因此 Android 的早期版本无法显示它们。 OS iirc 的早期版本实际上忽略了这段代码。
Which one should I use?
这完全取决于您使用的 Activity
类型。如果您的 activity 是 Activity
的 child,则使用 Activity.requestPermissions(permissions, requestCode)
。但是,如果您使用 ActivityCompat
的 child,请使用 ActivityCompat.requestPermissions(activity, permissions, requestCode)
.
运行时权限对话框显示在 Android 6.0 或更高版本中,因此 API 级别 23 中添加的 Activity.requestPermissions(...)
有意义。
但是为什么Android 6.0以下还有一个(ActivityCompat.requestPermissions(...)
)?这会在较低版本中显示运行时权限请求对话框吗?
和
有什么区别Activity.requestPermissions(permissions, requestCode)
和
ActivityCompat.requestPermissions(activity, permissions, requestCode)
我应该使用哪一个?
Does this show runtime permission request dialog in lower versions?
没有。低版本没有这样的对话框。它只会调用您的 onRequestPermissionsResult()
方法让您知道您拥有权限(因为根据定义,您已经拥有)。
What is the difference between
Activity#requestPermissions()
适用于 minSdkVersion
为 23 或更高的应用,或者适用于开发人员喜欢调用 if (Build.VERSION.SDK_INT >= 23)
以避免在旧设备上调用该调用的应用。
ActivityCompat.requestPermissions()
适用于任何应用程序,因为它 "does the right thing" 在所有支持的 API 级别上(回到 API 级别 14 IIRC)。
Which one should I use?
如果您的 minSdkVersion
为 23 或更高,请随意使用 Activity#requestPermissions()
。否则,我推荐ActivityCompat.requestPermissions()
。
But why is there another one (ActivityCompat.requestPermissions(...)) to be used for below Android 6.0?
存在是因为Android、android.app.Activity
、docs, and android.support.v4.app.ActivityCompat
docs、
Acvivity
Activity
用于最低SDK版本为14 iirc 的设备
ActivityCompat
是为了向后兼容(SDK 9 及更高版本)。它允许您访问可支持的新功能和 Material 主题,而无需任何新 OS 版本为实现新功能和 UI. 而引入的重大更改。
Does this show runtime permission request dialog in lower versions?
没有。 Android 6.0 是第一个显示运行时权限对话框的版本,因此 Android 的早期版本无法显示它们。 OS iirc 的早期版本实际上忽略了这段代码。
Which one should I use?
这完全取决于您使用的 Activity
类型。如果您的 activity 是 Activity
的 child,则使用 Activity.requestPermissions(permissions, requestCode)
。但是,如果您使用 ActivityCompat
的 child,请使用 ActivityCompat.requestPermissions(activity, permissions, requestCode)
.