我不確定我完全理解這一點。因此,對於< = 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?