我刚刚知道名为“ uses-permission-sdk-23 ”的安卓文件中的较新标记
<uses-permission-sdk-23 android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CAMERA" />
有人可以提供这两者之间的区别吗?
答案 0 :(得分:7)
<uses-permission>
适用于所有SDK,<uses-permission-sdk-23>
仅将权限应用于SDK 23 +。
<uses-permission-sdk-23>
?对于Android SDK 23及更高版本,选项可在运行时请求权限,但安装后权限将处于默认状态,安装时不会提示用户。 (基本上,这可以用来提示用户在需要使用的基础上授予权限,并且您有机会解释为什么需要它。)
但是,对于SDK 22及更低版本,系统会在安装时提示用户输入权限。由于某些权限对用户来说似乎是可疑或狡猾的,因此您可能不希望为SDK 22及更低版本请求这些权限,因为您无法事先解释为什么需要它们,因此<uses-permission-sdk-23>
标记。
此外:文档不清楚sdk-23
权限是否也会导致应用在Play商店中进行过滤,但如果您打算这样做,文档建议您使用<uses-feature>
元素来声明硬件兼容性。
通常情况下,如果您的应用不需要支持SDK 22及更低版本,或者如果SDK 22或更低版本不需要您请求的权限,那么最好使用<uses-permission-sdk-23>
,因为它很明显在运行时请求此权限。
否则,应使用<uses-permission>
,因为这是向后兼容的,并且任何SDK版本的行为都是正确的; 22及以下,将在安装时请求许可。 23及以上,由您自行决定。
您应该尽可能在运行时请求权限,因为它允许您向用户解释为什么需要某些权限,而不是仅在用户可能未在应用程序中建立信任时在安装时提示权限列表。
这两个属性都接受maxSdkVersion
属性,可以在旧设备需要权限时使用,但新设备不需要。 (例如,Android文档中显示的WRITE_EXTERNAL_STORAGE
示例。)
答案 1 :(得分:6)
如果应用在SDK版本23或更高版本的设备上运行。如果设备运行的是SDK版本22或更低版本
更新应用以包含需要其他权限的新功能时。如果用户在运行SDK版本22或更低版本的设备上更新应用程序,系统会在安装时提示用户授予在该更新中声明的所有新权限。如果新功能足够小,您可能希望在这些设备上完全禁用该功能,因此用户无需授予更新应用程序的其他权限。使用 uses-permission-sdk-23 元素代替使用权限
只有当应用程序在支持运行时权限模型的平台上运行时,您才可以请求权限,用户在运行时授予应用程序权限。
了解更多信息,请参阅此内容。uses - Permission sdk 23
答案 2 :(得分:4)
通过使用<uses-permission-sdk-23>
元素而不是<uses-permission>
,只有当应用程序在支持运行时权限模型的平台上运行时,您才可以请求权限,用户在此时授予应用程序权限它正在运行。
已经引入以支持Marshmallow (API-23)的运行时权限功能。
这只是指定应用需要特定权限,但前提是该应用在SDK版本为23或更高版本的设备上运行。如果设备运行的是SDK版本22或更低版本,则该应用程序没有指定的权限。 当您更新应用程序以包含需要其他权限的新功能时,此元素非常有用。如果用户在运行SDK版本22或更低版本的设备上更新应用程序,系统会在安装时提示用户授予在该更新中声明的所有新权限。
您可以访问documentation。
答案 3 :(得分:1)
user-permission-sdk-23指定需要特定权限的应用在SDK版本23或更高版本上运行。 当您更新应用程序以运行SDK 23元素和运行较低API且不支持新元素的用户时,将使用它。
答案 4 :(得分:1)
指定应用需要特定权限,但前提是该应用在API级别为23或更高级别的设备上运行。如果设备运行API级别22或更低级别,则该应用程序没有指定的权限。
答案 5 :(得分:0)