Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果我不需要安卓6.0 API 23的功能,我是否需要关心运行时权限?_Android_Compatibility - Fatal编程技术网

Android 如果我不需要安卓6.0 API 23的功能,我是否需要关心运行时权限?

Android 如果我不需要安卓6.0 API 23的功能,我是否需要关心运行时权限?,android,compatibility,Android,Compatibility,这是一个简单的问题,如果有人能证实我的想法,我会得到帮助 Android 6中有一个新的功能/变化,即运行时权限,应用程序在运行时不查询权限,而是在真正使用该功能时查询权限。这是一个很好的想法,但是支持它需要我修改代码,我不希望编写更多的Java代码,而不是绝对必要的代码 因此,如果我真的不需要API23(安卓6)的功能,我可以简单地使用API22版本并保持代码不变,同时能够在安卓6手机上运行吗 我的看法是,新的Android版本至少与以前的一些API版本兼容,否则所有应用程序都需要更新。如果您

这是一个简单的问题,如果有人能证实我的想法,我会得到帮助

Android 6中有一个新的功能/变化,即运行时权限,应用程序在运行时不查询权限,而是在真正使用该功能时查询权限。这是一个很好的想法,但是支持它需要我修改代码,我不希望编写更多的Java代码,而不是绝对必要的代码

因此,如果我真的不需要API23(安卓6)的功能,我可以简单地使用API22版本并保持代码不变,同时能够在安卓6手机上运行吗


我的看法是,新的Android版本至少与以前的一些API版本兼容,否则所有应用程序都需要更新。

如果您在API 22上编译应用程序,您将无法使用API 23的任何功能。您的应用程序在API 23上的行为将与在API 22上的行为一样正常

如果设备运行的是Android 5.1或更低版本,或者你的应用程序的目标SDK是22或更低版本:如果你在清单中列出了一个危险的权限,用户在安装应用程序时必须授予该权限;如果他们不授予该权限,则系统根本不会安装该应用程序


如果您使用API 22编译应用程序,您将无法使用API 23的任何功能。您的应用程序在API 23上的行为将与在API 22上的行为一样正常

如果设备运行的是Android 5.1或更低版本,或者你的应用程序的目标SDK是22或更低版本:如果你在清单中列出了一个危险的权限,用户在安装应用程序时必须授予该权限;如果他们不授予该权限,则系统根本不会安装该应用程序

因此,如果我真的不需要API23(安卓6)的功能,我可以简单地使用API22版本并保持代码不变,同时能够在安卓6手机上运行吗

TL;DR:您不需要处理运行时权限,但不是因为您引用的原因

控制应用程序是否必须处理运行时权限的是您的
targetSdkVersion
。如果是23或更高,您必须在Java代码中处理运行时权限。如果该值为22或更低,则不会,但用户仍可以通过设置撤消权限

targetSdkVersion
影响API级别的某些功能,但不是全部功能。通常情况下,它影响的内容会写在JavaDocs中,用于
Build.VERSION\u CODES
值,但不管出于什么原因

您是否可以编码到任何API级别23功能取决于您的
compileSdkVersion
。API级别中有许多东西不受
targetSdkVersion
的影响,例如新类和新方法。在您的情况下,您表示您不需要这些,这很好。但是,
compileSdkVersion
并不影响Android 6.0+是否要求您在Java代码中实现运行时权限逻辑<代码>目标SDKVersion执行

最终,有些事情会迫使你的手将
targetSdkVersion
提高到23或更高。此时,您将需要“咬紧牙关”并处理运行时权限

因此,如果我真的不需要API23(安卓6)的功能,我可以简单地使用API22版本并保持代码不变,同时能够在安卓6手机上运行吗

TL;DR:您不需要处理运行时权限,但不是因为您引用的原因

控制应用程序是否必须处理运行时权限的是您的
targetSdkVersion
。如果是23或更高,您必须在Java代码中处理运行时权限。如果该值为22或更低,则不会,但用户仍可以通过设置撤消权限

targetSdkVersion
影响API级别的某些功能,但不是全部功能。通常情况下,它影响的内容会写在JavaDocs中,用于
Build.VERSION\u CODES
值,但不管出于什么原因

您是否可以编码到任何API级别23功能取决于您的
compileSdkVersion
。API级别中有许多东西不受
targetSdkVersion
的影响,例如新类和新方法。在您的情况下,您表示您不需要这些,这很好。但是,
compileSdkVersion
并不影响Android 6.0+是否要求您在Java代码中实现运行时权限逻辑<代码>目标SDKVersion执行


最终,有些事情会迫使你的手将
targetSdkVersion
提高到23或更高。此时,您将需要“咬紧牙关”并处理运行时权限。

谢谢,这是我所寻找的确认。这很有道理。我不知道人们为什么投了反对票?@commonware,你能解释一下吗,因为我已经试过了。@RohitArya:看我的答案。开发人员可以将
compileSdkVersion
设置为23,并使用API级别23的功能,而无需将
targetSdkVersion
设置为23,也无需处理运行时权限代码。你剩下的答案很好;只是第一句不正确。对不起,这是一个打字错误,我的意思是
compileSdkVersion
。谢谢你纠正我。谢谢你,这是我想要的确认书。这很有道理。我不知道人们为什么投了反对票?@commonware,你能解释一下吗,因为我已经试过了。@RohitArya:看我的答案。开发人员可以将
compileSdkVersion
设置为23,并使用API级别23的功能,而无需将
targetSdkVersion
设置为23,也无需处理运行时权限代码。你剩下的答案很好;只是第一句不正确。对不起,这是一个打字错误,我的意思是
compileSdkVersion
。谢谢你纠正我。我喜欢这个答案突出了两个不同的SdkVersion方面。我检查了一下,我现在