Android開發 - 更"聰明"的申請權限方式
阿新 • • 發佈:2018-10-18
.cn 可能 pac context lean pat 更多 我們 boolean 在Android6.0以後,很多權限需要動態申請,只有在用戶點同意後,我們才能使用對應API,因此,正確申請權限就顯得很重要。
常用方式
通常我們使用這種方式來判斷權限狀態:
private static boolean isGranted(final String permission) { return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(Utils.getApp(), permission); }
但是用這種方式我們會碰到一個比較棘手的情況,當用戶同意了某個權限後,然後用戶又在手機的系統設置的應用權限中關閉了這個權限,此時我們並不能正確獲取到正確的權限狀態。
解決辦法
有可能Android團隊意識到了這個問題,所以他們發布了一個新的權限檢查類:android.support.v4.content.PermissionChecker;
用這個類進行權限的檢查就會正確返回,所以我們把權限校驗的方法修改如下:
import android.support.v4.content.PermissionChecker; private static boolean isGranted(final String permission) { return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || PackageManager.PERMISSION_GRANTED == PermissionChecker.checkCallingOrSelfPermission(Utils.getApp(), permission); }
這樣就會解決手機設置與用戶授權不一致的問題。
本文原始地址,如有更多疑問,請參考我的其它Android相關博客:我的博客地址
Android開發 - 更"聰明"的申請權限方式