Android 6.0中怎么動(dòng)態(tài)獲取權(quán)限,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
安圖網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),安圖網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為安圖成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的安圖做網(wǎng)站的公司定做!
哪些權(quán)限需要申請(qǐng)
Android目前所有權(quán)限大可分為兩種,一種是普通權(quán)限,另一種則是危險(xiǎn)權(quán)限。普通權(quán)限指的是不會(huì)直接威脅到用戶的安全和隱私的權(quán)限,這些權(quán)限的申請(qǐng),系統(tǒng)會(huì)自動(dòng)幫我們申請(qǐng)。危險(xiǎn)權(quán)限則是可能會(huì)對(duì)用戶的隱私以及設(shè)備的安全性造成威脅的權(quán)限。這些權(quán)限例如獲取聯(lián)系人信息、獲取設(shè)備的地理位置、打開攝像頭等。對(duì)于這危險(xiǎn)權(quán)限,在Android 6.0之后必須由用戶自行判斷管理。如果用戶授權(quán),應(yīng)用程序才會(huì)具有這相應(yīng)的功能。
下圖為危險(xiǎn)權(quán)限列表,一共9組24個(gè)權(quán)限。 需要注意的一點(diǎn)
: 如果權(quán)限組中有個(gè)權(quán)限得到用戶的授權(quán),那么該權(quán)限所在組中所有其他權(quán)限也會(huì)同時(shí)被授權(quán)。
我自己基于samples-23_r02\system\RuntimePermissions\實(shí)例代碼,寫出了一個(gè)demo。demo是功能是動(dòng)態(tài)獲取攝像頭權(quán)限,如果用戶同意授權(quán),則獲取攝像頭預(yù)覽畫面。
1)在AndroidMesifest.xml文件中添加攝像頭權(quán)限
2)使用ActivityCompat.checkPermission()進(jìn)行判斷需要用到的權(quán)限是否已經(jīng)經(jīng)過用戶授權(quán)這個(gè)方法第一個(gè)參數(shù)是上下文,第二個(gè)參數(shù)是具體的權(quán)限名。
代碼可以這樣寫:
我在demo里面已經(jīng)把權(quán)限抽取出來,封裝在一個(gè)工具內(nèi)中。
在MainActivity中,判斷權(quán)限:
在PermissionUtil中,具體實(shí)現(xiàn):
3)如果沒有獲得權(quán)限,就需要調(diào)用ActivityCompat.requestPermissions()方法進(jìn)行申請(qǐng)權(quán)限,并且實(shí)現(xiàn)onRequestPermissionsResult()方法。
requestPermissions()一共有3個(gè)參數(shù),第1個(gè)參數(shù)是Activity的實(shí)例,第2個(gè)參數(shù)是一個(gè)String數(shù)組,第2個(gè)參數(shù)是請(qǐng)求碼,可以自己自行定義,只要確保是唯一值即可。
在demo中,我為了能夠兼容一次申請(qǐng)多個(gè)權(quán)限,自己實(shí)現(xiàn)代碼如下:
onRequestPermissionsResult()方法的具體實(shí)現(xiàn):
看完上述內(nèi)容,你們掌握Android 6.0中怎么動(dòng)態(tài)獲取權(quán)限的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!