RuntimePermissions

這只是我在學Android過程中對于所學知識的鞏固和方便日后查詢的學習筆記,能幫助到有需要的和我一樣的初學者就更好了

android6.0引入秃踩,為避免軟件開發(fā)方惡意申請權限,引入運行時權限在需要權限時申請并由用戶決定是否授權业筏。即使不予授權也只會影響該應用個別功能而不影響其他功能

需要申請的危險權限

GroupName PermissionName
CALENDAR READ_CALENDAR
WRIET_CALENDER
CAMERA CAMERA
CONTACTS READ_CONTACTS
WRITE_CONTACTS ;GET_CPNTACTS
LOCATION ACESS_FINAL_LOCATION
ACESS_COARSE_LOCATION
MICROPHONE RECORD_AUDIO
PHONE READ_PHONE_STATE
CALL_PHONE
READ_ALL_LOG
WRITE_ALL_LOG
ADD_VOICEMAIL
USE_SIP
SENSORS BODY_SENSORS
SMS SEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS
STORAGE READ_EXTERNAL_STORAGE
WRITE_EXRETNAL_STORAGE

其余的權限在AndrodiManifest.xml中<usue-permission ....>即可

運行時申請權限

以MainActivity中申請CALL_PHONE為例

if(ContextCompat.checkselfpermission(MainActivity.this ,Manifest.permission.CALL_PHONE))
            !=PackageManager.PERMISSION_GRANTED){
//自查權限是否與已申請
    ActivityCompat.requestPermission(MainActivity.this , new String[]{Manifest.permission.CALL_PHONE} ,1);
//三個參數(shù)為context憔杨、權限名字字符串數(shù)組、請求碼(可自定但要唯一)
}

彈出的對話框不論選擇了ALLOW還是DENY都會回調以下方法

@override
public void onRequestPermissionResult(int requestCode ,String[] permissions 
                                                                                           ,int[] grantResults ){
    switch(requestCode){
        case 1:               //前面自定的請求碼
            if(grantResules.length()>0&&grantResults[0]==
                                    PackageManager.PERMISSION_GRANTER){
                //表示通過申請蒜胖,可執(zhí)行接下來的邏輯
            }else{
                //添加申請未通過的回執(zhí)消别,例如Toast
           }
            break;
        default :
            break;
    }
}

要注意的是,如果該權限所屬的權限組中還有其他權限的話台谢,同意此權限也會同時授權其所屬權限組的其他權限并且用戶不手動關閉的話會一直保持授權

同時申請多個權限

只要先判斷是否已申請通過寻狂,若沒通過則添加至權限名字符串數(shù)組中去申請權限即可

List<String> permissionList=new ArrayList();
//保存要申請的權限名稱的集合
if(ContextCompat.checkselfpermission(MainActivity.this ,Manifest.permission.CALL_PHONE))
            !=PackageManager.PERMISSION_GRANTED){
    permissionList.add(Manifest.permission.CALL_PHONE);
}
if(ContextCompat.checkselfpermission(MainActivity.this ,Manifest.permission.READ_PHONE_STATE))
            !=PackageManager.PERMISSION_GRANTED){
    permissionList.add(Manifest.permission.READ_PHONE_STATE);
}
if(ContextCompat.checkselfpermission(MainActivity.this ,Manifest.permission.ACCESS_FINAL_LOCATION))
            !=PackageManager.PERMISSION_GRANTED){
    permissionList.add(Manifest.permission.ACCESS_FINAL_LOCATION);
}
if(!permissionList.isEmpty()){
    String[] permissions=permissionList.toArray(new String[permissionList.size()]);
    //將保存了權限名字的集合轉為數(shù)組形式
    ActivityCompat.requestPermissions(MainActivity.this ,permissions ,1);
}

@override
public void onRequestPermissionResult(int requestCode ,String[] permissions 
                                                                                           ,int[] grantResults ){
    switch(requestCode){
        case 1:              
            if(grantResules.length()>0){
                for(int result :grantResults){
                    if(result!=PackageManager.PERMISSION_GRANTED){
                        //沒通過申請,添加回執(zhí)例如Toast
                    }
                }
            }else{
              //通過申請对碌,執(zhí)行所需代碼
             }
             break;
        default:
             break;
    }

總之就是申請的結果保存在了int[] grantResults中荆虱,不論有多少以此取出和
PackageManager.PERMISSION_GRANTED對比,相同為通過朽们,不同為未通過

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末怀读,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子骑脱,更是在濱河造成了極大的恐慌菜枷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叁丧,死亡現(xiàn)場離奇詭異啤誊,居然都是意外死亡,警方通過查閱死者的電腦和手機拥娄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門蚊锹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稚瘾,你說我怎么就攤上這事牡昆。” “怎么了摊欠?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵丢烘,是天一觀的道長柱宦。 經常有香客問我,道長播瞳,這世上最難降的妖魔是什么掸刊? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮赢乓,結果婚禮上忧侧,老公的妹妹穿的比我還像新娘。我一直安慰自己骏全,他們只是感情好苍柏,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布尼斧。 她就那樣靜靜地躺著姜贡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棺棵。 梳的紋絲不亂的頭發(fā)上楼咳,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音烛恤,去河邊找鬼母怜。 笑死,一個胖子當著我的面吹牛缚柏,可吹牛的內容都是我干的苹熏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼币喧,長吁一口氣:“原來是場噩夢啊……” “哼轨域!你這毒婦竟也來了?” 一聲冷哼從身側響起杀餐,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤干发,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后史翘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枉长,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年琼讽,在試婚紗的時候發(fā)現(xiàn)自己被綠了必峰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡钻蹬,死狀恐怖吼蚁,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情脉让,我是刑警寧澤桂敛,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布功炮,位于F島的核電站,受9級特大地震影響术唬,放射性物質發(fā)生泄漏薪伏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一粗仓、第九天 我趴在偏房一處隱蔽的房頂上張望嫁怀。 院中可真熱鬧,春花似錦借浊、人聲如沸塘淑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽存捺。三九已至,卻和暖如春曙蒸,著一層夾襖步出監(jiān)牢的瞬間捌治,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工纽窟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肖油,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓臂港,卻偏偏與公主長得像森枪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子审孽,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容