在安卓各个版本中,无论是普通全新还是动态权限,都需要在Manifest.xml文件中进行声明。然而在不同版本的系统或者不同的target sdk version中结果是不同的。
如果是运行在5.1或者更低版本的操作系统,或者你的target sdk verison不大于22,当你在manifest中声明的权限,用户在安装过程中必须授予全部权限,否则应用不能正常安装。
如果是运行在6.0或者更高操作系统,并且target sdk version大于22(23或者以上),应用必须在manifest文件中声明需要的权限,是在运行过程中向用户申请动态授予敏感权限,用户可以拒绝和授予相应的权限,程序依赖授予的权限继续运行。
注如果当前操作系统是6.0和更高版本,而target sdk version不大于22,那么应用程序会在安装或者更新程序时申请赋予manifest申请的全部敏感权限。
targetSdkVersion:程序运行时起作用,用于提高指定版本设备运行体验
minSdkVersion maxSdkVerion:程序安装时起作用,指定哪些设备上可以运行
target API Level(compileSdkVersion):程序编译时起作用,指用哪个api(sdk版本)版本来编译
更详细的描述可以参看
https://testerhome.com/topics/5181