默认授予权限
Permissions are granted by default
我不确定我是否完全理解这一点。因此,对于 <= 21 API 版本,我们可以只使用 AndroidManifest.xml
来请求权限,但是 Lollipop 和更高的 APIs 我们有 Requesting permission on runtime 功能。所以我用这个简单的代码来使用它:
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,安装应用程序时默认授予的所有权限.所以我想知道为什么,但是,还有一个更大的问题,当我在应用程序管理器中转到我的应用程序并 手动删除麦克风许可时,应用程序 checkSelfPermission(permission)
仍然返回 GRANTED。所以问题:
- 为什么在具有 API 级别 Lollipop 及更高级别的设备上,默认情况下仍然授予所有权限,并且上面的代码不会向
mPersmissionToBeAsked
添加任何内容?
- 为什么我在应用程序管理器中手动删除标题为 MICROPHONE 的权限
checkSelfPermission(android.permission.RECORD_AUDIO)
仍然 returns GRANTED?
只需在您的应用 gradle 文件中交叉验证 targetsdk 版本大于 22。
defaultConfig {
// -----
targetSdkVersion 23
//----
}
如果小于 23,系统将自动授予您的应用权限。
首先是 Android M 及更高版本处理权限授予。这意味着你应该
targetSdkVersion 23
或以上。否则系统认为开发者没有针对该版本,即开发者不检查权限
我不确定我是否完全理解这一点。因此,对于 <= 21 API 版本,我们可以只使用 AndroidManifest.xml
来请求权限,但是 Lollipop 和更高的 APIs 我们有 Requesting permission on runtime 功能。所以我用这个简单的代码来使用它:
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,安装应用程序时默认授予的所有权限.所以我想知道为什么,但是,还有一个更大的问题,当我在应用程序管理器中转到我的应用程序并 手动删除麦克风许可时,应用程序 checkSelfPermission(permission)
仍然返回 GRANTED。所以问题:
- 为什么在具有 API 级别 Lollipop 及更高级别的设备上,默认情况下仍然授予所有权限,并且上面的代码不会向
mPersmissionToBeAsked
添加任何内容? - 为什么我在应用程序管理器中手动删除标题为 MICROPHONE 的权限
checkSelfPermission(android.permission.RECORD_AUDIO)
仍然 returns GRANTED?
只需在您的应用 gradle 文件中交叉验证 targetsdk 版本大于 22。
defaultConfig {
// -----
targetSdkVersion 23
//----
}
如果小于 23,系统将自动授予您的应用权限。
首先是 Android M 及更高版本处理权限授予。这意味着你应该
targetSdkVersion 23
或以上。否则系统认为开发者没有针对该版本,即开发者不检查权限