我正在开发的应用程序使用蓝牙和存储权限,因此我的AndroidManifest.xml包含以下内容。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"></uses-permission>
然而,当安装该应用程序时,在扫描蓝牙设备后,在我的设备设置(设置 - &gt;应用程序 - > [我的应用程序] - &gt;权限)中手动启用“位置”权限之前,未发现任何内容。我已经读过某个地方,如果您想使用蓝牙,Android 6.0(可能是7.0)及以上版本需要此权限,但为什么在清单文件中安装时没有启用这些权限?我错过了一个吗?
答案 0 :(得分:3)
来自官方documentation。
系统权限分为两类:普通和危险:
- 正常权限不会直接冒使用户隐私的风险。如果您的应用在其清单中列出了正常权限,系统会授予权限 自动许可。
- 危险权限可让应用访问用户的机密数据。如果您的应用在其中列出了正常权限 清单,系统自动授予权限。如果你 列出危险许可,用户必须明确给予 批准您的应用。
和
- 如果设备运行的是Android 5.1或更低版本,或者您的应用的目标SDK是22或更低:如果您列出了危险权限 清单,用户在安装时必须授予权限 应用;如果他们不授予权限,则系统不会安装 应用程序。
- 如果设备运行的是Android 6.0或更高版本,并且您的应用的目标SDK为23或更高:应用必须列出权限 清单,它必须要求每个危险的许可 应用程序运行时需要。用户可以授予或拒绝每个 权限,应用程序可以继续运行有限 功能即使用户拒绝权限请求也是如此。
因此,您很可能会在运行API 23+的设备或模拟器上测试您的应用,并请求设备的位置。
位置权限是危险的,因此在Android 6.0或更高版本中,用户可以手动进行位置访问。为此,您必须以编程方式添加危险权限。看看 here ,以获得良好的指导。
PS 要查明哪些权限危险,正常,请查看 here 强>
答案 1 :(得分:2)
答案 2 :(得分:1)
某些权限被归类为危险,需要在运行时提出。
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
将READ_CONTACTS权限替换为位置权限