在Android6.0以后,很多權(quán)限需要動態(tài)申請,只有在用戶點同意后,我們才能使用對應(yīng)API,因此,正確申請權(quán)限就顯得很重要。
我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、肅北ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的肅北網(wǎng)站制作公司
通常我們使用這種方式來判斷權(quán)限狀態(tài):
private static boolean isGranted(final String permission) {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M
|| PackageManager.PERMISSION_GRANTED
== ContextCompat.checkSelfPermission(Utils.getApp(), permission);
}
但是用這種方式我們會碰到一個比較棘手的情況,當用戶同意了某個權(quán)限后,然后用戶又在手機的系統(tǒng)設(shè)置的應(yīng)用權(quán)限中關(guān)閉了這個權(quán)限,此時我們并不能正確獲取到正確的權(quán)限狀態(tài)。
有可能Android團隊意識到了這個問題,所以他們發(fā)布了一個新的權(quán)限檢查類:android.support.v4.content.PermissionChecker;
用這個類進行權(quán)限的檢查就會正確返回,所以我們把權(quán)限校驗的方法修改如下:
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);
}
這樣就會解決手機設(shè)置與用戶授權(quán)不一致的問題。
本文原始地址,如有更多疑問,請參考我的其它Android相關(guān)博客:我的博客地址
網(wǎng)站題目:Android開發(fā)-更"聰明"的申請權(quán)限方式
URL地址:http://aaarwkj.com/article2/gihoic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、面包屑導(dǎo)航、網(wǎng)站策劃、小程序開發(fā)、網(wǎng)站收錄、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)