我不确定我完全理解这一点。因此,对于< = 21 API版本,我们可以使用AndroidManifest.xml
来请求权限,但是棒棒糖和更高API我们有Requesting permission on runtime功能。所以我在使用本simpe代码:默认授予权限
if (Build.VERSION.SDK_INT >= 23) {
mPermissionsToBeAsked.clear();
for (String permission : AudioRecordingThread.PERMISSIONS_NEEDED) {
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
mPermissionsToBeAsked.add(permission);
}
} ....
然后,如果该列表不为空,我正在请求他们:
if (mPermissionsToBeAsked.size() > 0) {
requestPermissions(mPermissionsToBeAsked.toArray(new String[0]), AUDIO_PERMISSIONS_REQUEST_CODE);
}
但是,出于某种原因,在设备上,例如,像Android 6.0.1的三星Galaxy S7,安装应用程序时预设的所有权限为。所以我想知道为什么,但是,它有一个更大的关注,当我去应用程序管理器中的应用程序和手动删除麦克风permision,在应用程序checkSelfPermission(permission)
仍然返回授予。所以问题:
- 为什么与API级别棒棒糖和设备更高的所有权限仍然默认与上面的代码授予不会添加任何东西到
mPersmissionToBeAsked
? - 为什么如果我手动删除应用程序管理器中的标题MICROPHONE的权限
checkSelfPermission(android.permission.RECORD_AUDIO)
仍然返回GRANTED?