Android M run-time permissions request
首次在 Google Play Developer Console 看到 "當機與ANR" 有一筆 Exception 出現
Google 大神說從 Android M 以上版本的權限取得有改變。
除了以往 mainifests 要求的權限外,在執行時期還要確認使用者是否允許權限使用,
使用者不允許的話還要說明權限需求的原因。
那些權限須要特別注意呢?
Android 6.0 新增的權限模式 - 執行時要求權限 (Runtime Permissions)
-----------------
後記
手邊沒有Android M的手機可以測試,昨天改的版本是否可正常運作在 Android M以上版本有待確認。
看完 Issue 188073 的討論後,我的理解是以往透過 intent 去使用系統的 MediaStore.ACTION_IMAGE_CAPTURE、MediaStore.ACTION_VIDEO_CAPTURE、Intent.ACTION_CALL 是不須要在 mainifests 宣告權限,可是在這 Android M 以上版本的政策實施後,除了原始 app 須要宣告權限,還要在呼叫 intent 時確認權限的取得,到下一個 camera app 後,會再確認一次權限。 這無疑是對使用者跟開發人員造成困擾,看來以上這三個 intent 都要自己實作了。
在還沒看這討論串前,有想過為什麼不能在呼叫 intent 時,也把相應的權限授與給另一個 app 呢? 不解呀!
請參考
Android M Camera Intent + permission bug?
Issue 188073: Use intent ACTION_IMAGE_CAPTURE to launch camera app requires CAMERA permission
訊息如下
java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity clip={text/uri-list U:file:///storage/emulated/0/Pictures/Temp/temp.png} (has extras) } from ProcessRecord{82c52a4 13909:tools.sporting.com.pictranslate/u0a36} (pid=13909, uid=10036) with revoked permission android.permission.CAMERA
Google 大神說從 Android M 以上版本的權限取得有改變。
除了以往 mainifests 要求的權限外,在執行時期還要確認使用者是否允許權限使用,
使用者不允許的話還要說明權限需求的原因。
那些權限須要特別注意呢?
Android 6.0 新增的權限模式 - 執行時要求權限 (Runtime Permissions)
-----------------
後記
手邊沒有Android M的手機可以測試,昨天改的版本是否可正常運作在 Android M以上版本有待確認。
看完 Issue 188073 的討論後,我的理解是以往透過 intent 去使用系統的 MediaStore.ACTION_IMAGE_CAPTURE、MediaStore.ACTION_VIDEO_CAPTURE、Intent.ACTION_CALL 是不須要在 mainifests 宣告權限,可是在這 Android M 以上版本的政策實施後,除了原始 app 須要宣告權限,還要在呼叫 intent 時確認權限的取得,到下一個 camera app 後,會再確認一次權限。 這無疑是對使用者跟開發人員造成困擾,看來以上這三個 intent 都要自己實作了。
在還沒看這討論串前,有想過為什麼不能在呼叫 intent 時,也把相應的權限授與給另一個 app 呢? 不解呀!
請參考
Android M Camera Intent + permission bug?
Issue 188073: Use intent ACTION_IMAGE_CAPTURE to launch camera app requires CAMERA permission
留言
張貼留言