安卓6.0運(yùn)行時(shí)權(quán)限。

Android6.0以后府树,為了更好的保護(hù)用戶隱私俐末,谷歌添加了運(yùn)行時(shí)權(quán)限機(jī)制。在6.0以前奄侠,我們安裝APP的時(shí)候卓箫,都需要接受一大堆權(quán)限。在6.0以后垄潮,谷歌規(guī)定危險(xiǎn)權(quán)限需要在使用APP的時(shí)候根據(jù)用戶自身需要進(jìn)行手動(dòng)授權(quán)烹卒。

在6.0以后闷盔,主要有兩類權(quán)限。一類是Normal Permissions旅急,這類權(quán)限不涉及個(gè)人隱私逢勾,不需要用戶進(jìn)行授權(quán),比如手機(jī)震動(dòng)坠非,訪問(wèn)網(wǎng)絡(luò)敏沉;一類是Dangerous Permissions,這類權(quán)限涉及個(gè)人隱私炎码,需要用戶進(jìn)行授權(quán)盟迟,比如讀取SD卡,訪問(wèn)通訊錄等潦闲。在用戶操作方面:當(dāng)執(zhí)行敏感操作之前彈出對(duì)話框攒菠,請(qǐng)求權(quán)限,可以拒絕歉闰,可以同意辖众;可以在設(shè)置頁(yè)面對(duì)APP的權(quán)限進(jìn)行查看,以及對(duì)單個(gè)權(quán)限進(jìn)行授權(quán)或者解除授權(quán)和敬。

下面是這兩種權(quán)限的詳細(xì)列表凹炸。

NormalPermissions

WRITE_SYNC_SETTINGS 寫(xiě)同步設(shè)置
WAKE_LOCK 喚醒鎖
VIBRATE 顫動(dòng)
USE FINGERPRINT 使用指紋
UNINSTALL_SHORTCUT 卸載快捷方式
TRANSMIT_IR 紅外傳輸
SET_WALLPAPER_HINTS 壁紙?jiān)O(shè)置提示
SET_WALLPAPER 設(shè)置壁紙
SET_TIME_ZONE 設(shè)置時(shí)區(qū)
SET_ALARM 設(shè)置鬧鐘
REQUEST_INSTALL_PACKAGES 請(qǐng)求安裝包
REORDER_TASKS 重新排序的任務(wù)
RECEIVE_BOOT_COMPLETED 收到啟動(dòng)完成
READ_SYNC_STATS 讀同步數(shù)據(jù)
NFC
MODIFY_AUDIO_SETTINGS 修改音頻設(shè)置
KILL_BACKGROUND_PROCESSES 殺死后臺(tái)進(jìn)程
INTERNET 網(wǎng)絡(luò)
INSTALL_SHORTCUT 安裝快捷方式
GET PACKAGE SIZE 得到包的大小
EXPAND_STATUS_BAR 擴(kuò)大狀態(tài)欄
DISABLE_KEYGUARD 禁用鍵盤(pán)守衛(wèi)
CHANGE_WIFI_STATE 更改無(wú)限網(wǎng)絡(luò)狀態(tài)
CHANGE_WIFI_MULTICAST_STATE 改變無(wú)限多播狀態(tài)
CHANGE_NETWORK_STATE 改變網(wǎng)絡(luò)狀態(tài)
BROADCAST_STICKY 粘性廣播
BLUETOOTH_ADMIN 藍(lán)牙管理
BLUETOOTH 藍(lán)牙技術(shù)
ACCESS_WIFI_STATE 訪問(wèn)無(wú)限網(wǎng)絡(luò)狀態(tài)
ACCESS_NOTIFICATION_POLICY 訪問(wèn)通知策略
ACCESS_NETWORK_STATE 訪問(wèn)網(wǎng)絡(luò)狀態(tài)
ACCESS_LOCATION_EXTRA_COMMANDS 訪問(wèn)地點(diǎn)額外的命令
Dangerous Permissions(9組24個(gè)):
group:android.permission-group.CONTACTS 通訊錄方面 
permission:android.permission.WRITE_CONTACTS 寫(xiě)入通訊錄 
permission:android.permission.GET_ACCOUNTS 訪問(wèn)通訊錄權(quán)限 
permission:android.permission.READ_CONTACTS 讀取通訊錄

group:android.permission-group.PHONE 電話方面 
permission:android.permission.READ_CALL_LOG 看電話記錄 
permission:android.permission.READ_PHONE_STATE 讀取手機(jī)狀態(tài) 
permission:android.permission.CALL_PHONE 打電話 
permission:android.permission.WRITE_CALL_LOG 編寫(xiě)調(diào)用日志 
permission:android.permission.USE_SIP 使用SIP 
permission:android.permission.PROCESS_OUTGOING_CALLS 過(guò)程輸出調(diào)用 permission:com.android.voicemail.permission.ADD_VOICEMAIL 添加語(yǔ)音信箱

group:android.permission-group.CALENDAR 日歷 
permission:android.permission.READ_CALENDAR 讀取日歷 
permission:android.permission.WRITE_CALENDAR 寫(xiě)入日歷 

group:android.permission-group.CAMERA 照相機(jī) 
permission:android.permission.CAMERA

group:android.permission-group.SENSORS 傳感器 
permission:android.permission.BODY_SENSORS 體傳感器

group:android.permission-group.LOCATION 位置 
permission:android.permission.ACCESS_FINE_LOCATION 獲取好位置 
permission:android.permission.ACCESS_COARSE_LOCATION 獲取定位group:android.permission-group.STORAGE 存儲(chǔ) 
permission:android.permission.READ_EXTERNAL_STORAGE 讀取外部存儲(chǔ)器 
permission:android.permission.WRITE_EXTERNAL_STORAGE 寫(xiě)外部存儲(chǔ)器

group:android.permission-group.MICROPHONE 擴(kuò)音器;麥克風(fēng) 
permission:android.permission.RECORD_AUDIO 錄音

group:android.permission-group.SMS 信息 
permission:android.permission.READ_SMS 讀取信息 
permission:android.permission.RECEIVE_WAP_PUSH 收到WAP推送 
permission:android.permission.RECEIVE_MMS 接收彩信 
permission:android.permission.RECEIVE_SMS 收信息 
permission:android.permission.SEND_SMS 發(fā)信息 
permission:android.permission.READ_CELL_BROADCASTS 讀細(xì)胞廣播
注:Dangerous Permissions 列表的權(quán)限是有分組的昼弟。

當(dāng)申請(qǐng)某個(gè)危險(xiǎn)權(quán)限的時(shí)候啤它,假如早已經(jīng)對(duì)同一組權(quán)限里面的某個(gè)權(quán)限進(jìn)行了授權(quán),那么系統(tǒng)會(huì)立即授權(quán)舱痘,而不需要再次點(diǎn)擊授權(quán)变骡。不過(guò)需要注意的是,不要對(duì)權(quán)限組過(guò)多的依賴芭逝,盡可能對(duì)每個(gè)危險(xiǎn)權(quán)限都進(jìn)行正常流程的申請(qǐng)塌碌,因?yàn)樵诤笃诘陌姹局羞@個(gè)權(quán)限組可能會(huì)產(chǎn)生變化。

Demo
package apps.gzgi.com.android6permission;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity{
    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button= (Button) findViewById(R.id.call);
        button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
                if (ContextCompat.checkSelfPermission(MainActivity.this,
                        Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);
                } else {
                    call();
                }
        }
    });
    }
    private  void  call(){
        try {
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:10086"));
            startActivity(intent);
        } catch (SecurityException e) {
            e.printStackTrace();
        }
    }
}

代碼中模擬了打電話旬盯,首先判斷用戶是不是已經(jīng)給我們授權(quán)了台妆,借助的是ContextCompat.checkSelfPermission方法。方法接收兩個(gè)參數(shù)胖翰,第一個(gè)參數(shù)是Context频丘,第二個(gè)參數(shù)是具體的權(quán)限名Manifest.permission.CALL_PHONE,然后使用方法的返回值和PackageManager.PERMISSION_GRANTED(權(quán)限準(zhǔn)許)做比較泡态,相等則表示已經(jīng)授權(quán)搂漠,不相等表示沒(méi)有授權(quán)。
已經(jīng)授權(quán)就去執(zhí)行撥打電話的操作某弦,沒(méi)有授權(quán)則借助ActivityCompat.requestPermissions方法向客戶申請(qǐng)授權(quán)桐汤,接收三個(gè)參數(shù)而克,第一個(gè)參數(shù)是Activity的實(shí)例,第二個(gè)參數(shù)是一個(gè)String數(shù)組怔毛,我們把要申請(qǐng)的權(quán)限名放在數(shù)組中即可员萍,第三個(gè)參數(shù)是請(qǐng)求碼,只要唯一值就可以了拣度,這里傳入了1碎绎。

調(diào)用完了ActivityCompat.requestPermissions方法之后,系統(tǒng)會(huì)彈出一個(gè)權(quán)限申請(qǐng)的對(duì)話框抗果,然后用戶可以選擇同意或者拒絕我們的權(quán)限申請(qǐng)筋帖。不管選擇哪個(gè),都會(huì)調(diào)用onRequestPermissionsResult方法冤馏,授權(quán)的結(jié)果會(huì)封裝在grantResults參數(shù)當(dāng)中日麸,grantResults中存放的就是我們的申請(qǐng)權(quán)限時(shí)數(shù)組里面的內(nèi)容:new String[]{Manifest.permission.CALL_PHONE},如果grantResults的長(zhǎng)度大于0逮光,并且其中的權(quán)限等于PackageManager.PERMISSION_GRANTED代箭,那就表示授權(quán)成功。
那這里我們只需要判斷一下授權(quán)結(jié)果就可以了涕刚,如果用戶同意則調(diào)用call方法撥打電話嗡综,如果不同意就彈出一個(gè)失敗的提示即可。如果我們對(duì)剛才同意的權(quán)限后悔了杜漠,只需要在設(shè)置-應(yīng)用程序-權(quán)限管理里面去除我們想刪除的權(quán)限即可极景。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市碑幅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌塞绿,老刑警劉巖沟涨,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異异吻,居然都是意外死亡裹赴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)诀浪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)棋返,“玉大人,你說(shuō)我怎么就攤上這事雷猪【ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵求摇,是天一觀的道長(zhǎng)射沟。 經(jīng)常有香客問(wèn)我殊者,道長(zhǎng),這世上最難降的妖魔是什么验夯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任猖吴,我火速辦了婚禮,結(jié)果婚禮上挥转,老公的妹妹穿的比我還像新娘海蔽。我一直安慰自己,他們只是感情好绑谣,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布党窜。 她就那樣靜靜地躺著,像睡著了一般域仇。 火紅的嫁衣襯著肌膚如雪刑然。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天暇务,我揣著相機(jī)與錄音泼掠,去河邊找鬼。 笑死垦细,一個(gè)胖子當(dāng)著我的面吹牛择镇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播括改,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腻豌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了嘱能?” 一聲冷哼從身側(cè)響起吝梅,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惹骂,沒(méi)想到半個(gè)月后苏携,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡对粪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年右冻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片著拭。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纱扭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出儡遮,到底是詐尸還是另有隱情乳蛾,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站屡久,受9級(jí)特大地震影響忆首,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜被环,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一糙及、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筛欢,春花似錦浸锨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至剥险,卻和暖如春聪蘸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背表制。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工健爬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人么介。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓娜遵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親壤短。 傳聞我的和親對(duì)象是個(gè)殘疾皇子设拟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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