我不确定我是否完全理解这一点。因此,对于< = 21 API版本,我们可以使用AndroidManifest.xml
来请求权限,但是Lollipop和更高版本的API具有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,安装应用时默认授予的所有权限。所以我想知道为什么,但是,有更大的关注,当我在应用程序管理器中转到我的应用程序并且手动删除麦克风permision时,在应用程序中checkSelfPermission(permission)
仍然返回GRANTED 。所以问题:
mPersmissionToBeAsked
添加任何内容?checkSelfPermission(android.permission.RECORD_AUDIO)
中手动删除标题MICROPHONE的权限仍然会返回GRANTED ? 答案 0 :(得分:2)
只需在你的app gradle文件中验证targetsdk版本是否大于22。
defaultConfig {
// -----
targetSdkVersion 23
//----
}
如果小于23,则会自动授予您的应用权限。
答案 1 :(得分:1)
首先,它处理权限授予的Android M及以上版本。这意味着你应该
targetSdkVersion 23
或以上。否则,系统会认为开发人员没有针对此版本,这意味着开发人员不会检查权限。