本發(fā)明屬于移動(dòng)終端android系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種android系統(tǒng)權(quán)限管理方法。
背景技術(shù):
android系統(tǒng)permission機(jī)制的大部分功能都有android系統(tǒng)代碼完成,在系統(tǒng)安全得到保證的前提下,訪問(wèn)者與資源間的訪問(wèn)控制是可以得到保證的。但是粗粒度的權(quán)限訪問(wèn)控制能力管理,使得permission機(jī)制存在一系列的安全問(wèn)題。由于不顯示授權(quán)界面、權(quán)限描述不清和粗粒度的用戶訪問(wèn)控制能力管理引發(fā)用戶permission確認(rèn)過(guò)程中的安全隱患,導(dǎo)致應(yīng)用程序過(guò)度申請(qǐng)權(quán)限、濫用權(quán)限和系統(tǒng)權(quán)限管理難度增加。
綜上所述,現(xiàn)有技術(shù)存在的問(wèn)題是:由于不顯示授權(quán)界面、權(quán)限描述不清和粗粒度的用戶訪問(wèn)控制能力管理引發(fā)用戶permission確認(rèn)過(guò)程中的安全隱患,以及permission傳遞機(jī)制管理的漏洞為攻擊者提供了合謀攻擊的途徑?,F(xiàn)有技術(shù)提供一站式服務(wù),相當(dāng)于應(yīng)用程序安裝時(shí),接受應(yīng)用程序所申請(qǐng)的所有權(quán)限,否則,不能安裝該應(yīng)用程序。這種一站式服務(wù)沒(méi)有提供后期的權(quán)限維護(hù)和修改、申請(qǐng)功能,而權(quán)限管理功能封裝在框架層,對(duì)于開(kāi)發(fā)者而言,必須深入android系統(tǒng)的開(kāi)發(fā),對(duì)其做相應(yīng)的修改。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明提供了一種android系統(tǒng)權(quán)限管理方法。
本發(fā)明是這樣實(shí)現(xiàn)的,一種android系統(tǒng)權(quán)限管理方法,所述android系統(tǒng)權(quán)限管理方法包括以下步驟:
應(yīng)用程序訪問(wèn)權(quán)限api,進(jìn)行權(quán)限檢查;
應(yīng)用程序權(quán)限不存在時(shí)進(jìn)入權(quán)限申請(qǐng);
應(yīng)用程序權(quán)限存在,android系統(tǒng)權(quán)限管理數(shù)據(jù)查詢(xún)應(yīng)用程序?qū)?yīng)的應(yīng)用進(jìn)程權(quán)限;
根據(jù)應(yīng)用進(jìn)程權(quán)限的查詢(xún)結(jié)果,執(zhí)行相應(yīng)操作。
進(jìn)一步,應(yīng)用程序根據(jù)訪問(wèn)api所需的權(quán)限調(diào)用checkselfpermission()方法,檢測(cè)應(yīng)用是否擁有該權(quán)限,當(dāng)應(yīng)用程序擁有該權(quán)限時(shí),進(jìn)入權(quán)限提示模塊,否則進(jìn)入權(quán)限申請(qǐng)模塊。
進(jìn)一步,權(quán)限申請(qǐng)?jiān)诔绦蛑袑?duì)權(quán)限進(jìn)行動(dòng)態(tài)的申請(qǐng)。
進(jìn)一步,應(yīng)用進(jìn)程權(quán)限包括允許、提示和拒絕。
進(jìn)一步,當(dāng)應(yīng)用程序?qū)?yīng)權(quán)限為允許時(shí),應(yīng)用程序正常調(diào)用權(quán)限的api;
當(dāng)應(yīng)用程序?qū)?yīng)權(quán)限為提示時(shí),應(yīng)用程序暫停執(zhí)行,彈出對(duì)話框并接受用戶的選擇,根據(jù)用戶的選擇來(lái)決定是否繼續(xù)執(zhí)行;
當(dāng)應(yīng)用程序?qū)?yīng)權(quán)限為拒絕時(shí),應(yīng)用程序繼續(xù)執(zhí)行,不能調(diào)用需要權(quán)限的api。
本發(fā)明的另一目的在于提供一種利用所述android系統(tǒng)權(quán)限管理方法的基于android6.0及以上版本權(quán)限新特性的權(quán)限管理方法,所述基于android6.0及以上版本權(quán)限新特性的權(quán)限管理方法具體步驟包括如下:
步驟一,權(quán)限檢測(cè):
程序封裝一個(gè)方法haspermission(),傳入的參數(shù)為權(quán)限名數(shù)組,調(diào)用checkselfpermission(),同時(shí)傳入?yún)?shù)為權(quán)限名數(shù)組,根據(jù)返回值來(lái)檢測(cè)是否擁有權(quán)限;
步驟二,權(quán)限申請(qǐng):
程序封裝一個(gè)權(quán)限申請(qǐng)方法requestpermission(),權(quán)限申請(qǐng)方法的參數(shù)為申請(qǐng)碼和權(quán)限名數(shù)組在方法中調(diào)用requestpermissions(),權(quán)限申請(qǐng)方法參數(shù)為權(quán)限名數(shù)組和context以及申請(qǐng)碼;
步驟三,請(qǐng)求回調(diào)處理:
重寫(xiě)一個(gè)方法onrequestpermissionresult(),主要的參數(shù)有申請(qǐng)碼、權(quán)限名數(shù)組,調(diào)用switch結(jié)構(gòu),根據(jù)申請(qǐng)碼進(jìn)行區(qū)分請(qǐng)求。
本發(fā)明的另一目的在于提供一種應(yīng)用所述android系統(tǒng)權(quán)限管理方法的移動(dòng)終端。
本發(fā)明的另一目的在于提供一種應(yīng)用所述android系統(tǒng)權(quán)限管理方法的android系統(tǒng)。
本發(fā)明的優(yōu)點(diǎn)及積極效果為:
本發(fā)明通過(guò)在程序中增加權(quán)限檢測(cè)、申請(qǐng)和回調(diào)方法,因此結(jié)合了android6.0及以上版本的權(quán)限管理新特性,增量權(quán)限在應(yīng)用層申請(qǐng)的功能,解決了android權(quán)限不能動(dòng)態(tài)申請(qǐng)的問(wèn)題。
本發(fā)明通過(guò)在權(quán)限管理中增加允許、提示和禁止功能,增加用戶自主控制應(yīng)用程序權(quán)限的能力,解決了android粗粒度的權(quán)限管理問(wèn)題。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例提供的基于android6.0系統(tǒng)權(quán)限管理方法流程圖。
圖2是本發(fā)明實(shí)施例提供的基于android6.0權(quán)限新特性的權(quán)限管理方法流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明實(shí)施例提供的基于android6.0及以上版本系統(tǒng)權(quán)限管理方法。
下面結(jié)合附圖對(duì)本發(fā)明的應(yīng)用原理作詳細(xì)的描述。
如圖1所示,本發(fā)明實(shí)施例基于android6.0提供的系統(tǒng)權(quán)限管理方法包括以下步驟:
s101:應(yīng)用程序訪問(wèn)需要權(quán)限的api時(shí),程序本身進(jìn)行權(quán)限檢查;
s102:應(yīng)用程序權(quán)限不存在時(shí)進(jìn)入權(quán)限申請(qǐng)模塊;
s103:應(yīng)用程序權(quán)限存在時(shí),在android系統(tǒng)的權(quán)限管理數(shù)據(jù)查詢(xún)所述應(yīng)用程序?qū)?yīng)的應(yīng)用進(jìn)程權(quán)限;
s104:根據(jù)所述應(yīng)用進(jìn)程權(quán)限的查詢(xún)結(jié)果,執(zhí)行相應(yīng)操作。
下面結(jié)合附圖對(duì)本發(fā)明的應(yīng)用原理作進(jìn)一步的描述。
本發(fā)明實(shí)施例提供的android系統(tǒng)權(quán)限管理方法包括以下步驟:
步驟一,當(dāng)應(yīng)用程序訪問(wèn)需要權(quán)限的api時(shí),程序本身進(jìn)行權(quán)限檢查
應(yīng)用程序根據(jù)訪問(wèn)api所需的權(quán)限調(diào)用checkselfpermission()方法,檢測(cè)應(yīng)用是否擁有該權(quán)限,當(dāng)應(yīng)用程序擁有該權(quán)限時(shí),進(jìn)入權(quán)限提示模塊,否則進(jìn)入權(quán)限申請(qǐng)模塊。
在本發(fā)明實(shí)施例中,android系統(tǒng)的權(quán)限管理數(shù)據(jù)來(lái)自于/data/system/packages.xml文件中,開(kāi)機(jī)時(shí)直接讀取該文件,加載權(quán)限信息到內(nèi)存。應(yīng)用程序的標(biāo)識(shí)用于區(qū)分應(yīng)用程序,該應(yīng)用程序標(biāo)識(shí)可以是包名。
需要權(quán)限的數(shù)據(jù)大致分為系統(tǒng)資源和應(yīng)用程序資源。系統(tǒng)資源包括android系統(tǒng)提供的各種服務(wù)、硬件設(shè)備、各種數(shù)據(jù)庫(kù)資源。應(yīng)用程序的資源包括構(gòu)成應(yīng)用程序的四大主鍵。這些資源通過(guò)對(duì)訪問(wèn)者提出能力要求,實(shí)現(xiàn)訪問(wèn)控制。
步驟二,當(dāng)應(yīng)用程序權(quán)限不存在時(shí)進(jìn)入權(quán)限申請(qǐng)模塊
在權(quán)限申請(qǐng)模塊主要運(yùn)用android6.0關(guān)于權(quán)限的新特性,在程序中對(duì)權(quán)限進(jìn)行動(dòng)態(tài)的申請(qǐng)。
步驟三,當(dāng)應(yīng)用程序權(quán)限存在時(shí),在android系統(tǒng)的權(quán)限管理數(shù)據(jù)查詢(xún)所述應(yīng)用程序?qū)?yīng)的應(yīng)用進(jìn)程權(quán)限。
在本發(fā)明實(shí)例中,應(yīng)用進(jìn)程權(quán)限包括允許、提示和拒絕。
步驟四,當(dāng)根據(jù)所述應(yīng)用進(jìn)程權(quán)限的查詢(xún)結(jié)果,執(zhí)行相應(yīng)操作。
當(dāng)應(yīng)用程序?qū)?yīng)權(quán)限為允許時(shí),應(yīng)用程序正常調(diào)用需要該權(quán)限的api;
當(dāng)應(yīng)用程序?qū)?yīng)權(quán)限為提示時(shí),應(yīng)用程序暫停執(zhí)行,彈出對(duì)話框并接受用戶的選擇,根據(jù)用戶的選擇來(lái)決定是否繼續(xù)執(zhí)行;
當(dāng)應(yīng)用程序?qū)?yīng)權(quán)限為拒絕時(shí),應(yīng)用程序繼續(xù)執(zhí)行,但不能調(diào)用需要該權(quán)限的api。
需要說(shuō)明的是,彈出對(duì)話框?yàn)閐ialog對(duì)話框,提示用戶索要讀取的數(shù)據(jù)或者訪問(wèn)的服務(wù),并接受用戶的選擇允許或拒絕。
如圖2所示,本發(fā)明實(shí)施例提供的基于android6.0權(quán)限新特性的權(quán)限管理方法具體步驟包括如下:
步驟一,權(quán)限檢測(cè)
程序封裝一個(gè)方法haspermission(),傳入的參數(shù)為權(quán)限名數(shù)組,在方法中調(diào)用checkselfpermission(),同時(shí)傳入?yún)?shù)為權(quán)限名數(shù)組,根據(jù)方法的返回值來(lái)檢測(cè)是否擁有該權(quán)限。
步驟二,權(quán)限申請(qǐng)
程序封裝一個(gè)權(quán)限申請(qǐng)方法requestpermission(),方法的主要參數(shù)為申請(qǐng)碼和權(quán)限名數(shù)組在方法中調(diào)用requestpermissions(),方法的主要參數(shù)為權(quán)限名數(shù)組和context以及申請(qǐng)碼。
步驟三,請(qǐng)求回調(diào)處理
重寫(xiě)一個(gè)方法onrequestpermissionresult(),主要的參數(shù)有申請(qǐng)碼、權(quán)限名數(shù)組。調(diào)用switch結(jié)構(gòu),根據(jù)申請(qǐng)碼進(jìn)行區(qū)分請(qǐng)求。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。