API23以上的運(yùn)行時(shí)權(quán)限


Android學(xué)習(xí)整理 - 系列


Android的權(quán)限機(jī)制從第一個(gè)版本就有了,一些軟件,不管用不用的到這些權(quán)限芒珠,都先申請(qǐng)了再說牺堰。比如某企鵝拄轻,安裝軟件時(shí)可以看到它要了讀取和發(fā)送信息的權(quán)限,嘿嘿嘿伟葫,話說要這權(quán)限干嘛恨搓,。筏养。斧抱。。
然后Android針對(duì)這些問題渐溶,在Android 6.0(API23)時(shí)安卓加入了運(yùn)行時(shí)權(quán)限辉浦,從而更好的保護(hù)了用戶的隱私安全。

  • 就是用戶不需要再安裝軟件的的時(shí)候一次性授權(quán)所有的權(quán)限茎辐,而是在軟件使用過程中針對(duì)某一些權(quán)限進(jìn)行申請(qǐng)宪郊,當(dāng)然眉睹,一般情況下,拒絕權(quán)限不會(huì)退出程序(萬惡的某博废膘,不給手機(jī)通訊錄打電話權(quán)限就退出)竹海,而是可以用別的功能。

  • 并不是所有的權(quán)限都要在運(yùn)行時(shí)申請(qǐng)丐黄,這樣得多麻煩斋配。Android將權(quán)限分為了兩類,1 普通權(quán)限灌闺,2 危險(xiǎn)權(quán)限

普通權(quán)限就是說不會(huì)直接威脅到用戶的安全和隱私艰争。這些權(quán)限系統(tǒng)會(huì)自動(dòng)授權(quán),只要你聲明了桂对。
危險(xiǎn)權(quán)限就是涉及用戶隱私的甩卓。這些就要運(yùn)行時(shí)動(dòng)態(tài)申請(qǐng)了

普通權(quán)限和危險(xiǎn)權(quán)限

  • Android系統(tǒng)有上百種權(quán)限,危險(xiǎn)權(quán)限如下表蕉斜,其他的就是普通權(quán)限了
危險(xiǎn)權(quán)限和權(quán)限組

需要注意的是
表格中每個(gè)權(quán)限都屬于一個(gè)權(quán)限組逾柿,要是申請(qǐng)了權(quán)限組的一個(gè)權(quán)限,那么該權(quán)限組的所有權(quán)限都會(huì)同時(shí)被授權(quán)宅此。比如机错,申請(qǐng)了WRITE_EXTERNAL_STORAGE這個(gè)權(quán)限,那么和它在同一權(quán)限組的READ_EXTERNAL_STORAGE也會(huì)同時(shí)被授權(quán)父腕!

不在這張表的權(quán)限可以直接在manifest文件里聲明就行了(API23以上)弱匪,不過平時(shí)為了兼容低版本,任何權(quán)限都要聲明在manifest文件里璧亮,然后在Activity中針對(duì)API23以上申請(qǐng)運(yùn)行時(shí)權(quán)限

動(dòng)態(tài)申請(qǐng)運(yùn)行時(shí)權(quán)限

一般情況下萧诫,比如,申請(qǐng)讀寫內(nèi)存卡權(quán)限
Manifest.permission.WRITE_EXTERNAL_STORAGE

在Activity的onCreate里

 //判斷權(quán)限夠不夠枝嘶,不夠就給
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{
                    Manifest.permission.WRITE_EXTERNAL_STORAGE
            }, 1);
        } else {
            //權(quán)限夠了這里處理邏輯
            Log.d(TAG, "權(quán)限夠了");
        }

Activity里加上回調(diào)帘饶,控制權(quán)限申請(qǐng)窗口彈出來的的邏輯

//獲取到權(quán)限回調(diào)方法
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[]permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case 1:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    //權(quán)限夠了處理邏輯
                    Log.d(TAG, "權(quán)限夠了,邏輯");
                } else {
                    Toast.makeText(this, "權(quán)限不夠,程序?qū)⑼顺?, Toast.LENGTH_SHORT).show();
                    finish();
                }
                break;
            default:
                break;
        }
    }

聲明權(quán)限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

然后運(yùn)行躬络,點(diǎn)擊拒絕就直接finish()了

Gradle集成

推薦的開源庫:
PermissionsDispatcher

中文版本: PermissionsDispatcher使用詳解

使用:
使用PermissionsDispatcher輕松解決Android權(quán)限問題

另一種思路:
Android 6.0運(yùn)行時(shí)權(quán)限簡(jiǎn)析及最佳實(shí)踐


參考

系統(tǒng)權(quán)限

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尖奔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子穷当,更是在濱河造成了極大的恐慌提茁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馁菜,死亡現(xiàn)場(chǎng)離奇詭異茴扁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)汪疮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門峭火,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毁习,“玉大人,你說我怎么就攤上這事卖丸》那遥” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵稍浆,是天一觀的道長(zhǎng)载碌。 經(jīng)常有香客問我,道長(zhǎng)衅枫,這世上最難降的妖魔是什么嫁艇? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮弦撩,結(jié)果婚禮上步咪,老公的妹妹穿的比我還像新娘。我一直安慰自己益楼,他們只是感情好猾漫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著偏形,像睡著了一般静袖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俊扭,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音坠陈,去河邊找鬼萨惑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛仇矾,可吹牛的內(nèi)容都是我干的庸蔼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贮匕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼姐仅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刻盐,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤掏膏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后敦锌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馒疹,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年乙墙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颖变。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片生均。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腥刹,靈堂內(nèi)的尸體忽然破棺而出马胧,到底是詐尸還是另有隱情,我是刑警寧澤衔峰,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布佩脊,位于F島的核電站,受9級(jí)特大地震影響朽色,放射性物質(zhì)發(fā)生泄漏邻吞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一葫男、第九天 我趴在偏房一處隱蔽的房頂上張望抱冷。 院中可真熱鬧,春花似錦梢褐、人聲如沸旺遮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耿眉。三九已至,卻和暖如春鱼响,著一層夾襖步出監(jiān)牢的瞬間鸣剪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國打工丈积, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筐骇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓江滨,卻偏偏與公主長(zhǎng)得像铛纬,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子唬滑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,081評(píng)論 25 707
  • 發(fā)熱放入Android6.0帶來了新的權(quán)限管理方式告唆,根據(jù)提供的官方文檔,再加上自己的理解晶密,做了以下匯總僅供大家伙參...
    PapiAP閱讀 1,685評(píng)論 0 6
  • <manifest> 首先擒悬,我們的根標(biāo)簽就是 manifest,有開始標(biāo)簽就有結(jié)束標(biāo)簽惹挟,所以每個(gè)標(biāo)簽都是成對(duì)出現(xiàn)的...
    IT_xiao小巫閱讀 825評(píng)論 0 2
  • 剛剛收到室友發(fā)來的消息:“班里學(xué)生證都蓋完章了用狱,我的還沒交……”然后配上了幾個(gè)苦笑的表情,隔著屏幕拼弃,我都能感受到她...
    簡(jiǎn)言之ii閱讀 1,260評(píng)論 0 0
  • 作為北方人夏伊,我沒見過 蠶吃桑葉的情景。據(jù)說 悄無聲息又吻氧,沙沙作響 我對(duì)蠶食的完美演繹溺忧,完全 憑借想象,好比時(shí)光之于...
    細(xì)雨煙嵐閱讀 390評(píng)論 0 0