這篇文章目的在於介紹Android系統上控制權限的方法,讀者只要使用過Android,或是對智能機平臺有所瞭解,就能看懂,不須要專門的編程知識。 android
1 爲何Android老是事無鉅細地告訴你應用索取的每一項權限? 編程
相比Apple,Microsoft嚴格控制生態系統(從蘋果給開發者的"App Store Guideline"可見一斑),只容許經過官方應用商店安裝應用,並對每份上傳進行仔細地審查而言,Android的開放就意味着,Google須要向 用戶提供一系列用於爲本身負責的流程、工具。因此在安裝應用前,Android老是要事無鉅細地告訴你,應用肯須要控制什麼權限。 安全
一樣,開發者也製做了一系列易用的工具,用以鑑別可疑的應用程序,或是控制權限。 框架
2 Android有哪些"權限" ide
首先須要明確一下Android中的種種"權限"。Android是在Linux內核上創建一個硬件抽象層(Android HAL),經過Dalvik以及各類庫來執行android應用的。在手機啓動時,首先須要由Bootloader(HTC手機上稱做Hboot)引導 Linux及手機上各個硬件設備的驅動程序,以後才啓動Android系統。因此其實咱們會涉及到四種不一樣涵義的權限: 工具
Android權限(Permission) ui
這指Android中的一系列"Android.Permission.*"對象,是本文的中心內容。 xml
Google在Android框架內把各類對象(包括設備上的各種數據,傳感器,撥打電話,發送信息,控制別的應用程序等)的訪問權限進行了詳細的劃 分,列出了約一百條"Android.Permission"。應用程序在運行前必須向Android系統聲明它將會用到的權限,不然Android將會 拒絕該應用程序訪問經過該"Permission"許可的內容。 對象
比方說,搜狗輸入法提供了一個智能通信錄的功能,用戶能夠在輸入聯繫人 拼音的前幾個字符,或首字母,輸入法就能自動呈現相關聯繫人的名字。爲了實現這個功能,輸入法必須聲明它須要讀取手機中聯繫人的能力,也就是在相關代碼中 加上聲明"android.permission.READ_CONTACTS"對象。 事件
3 權限控制的方法
這裏開始介紹各類控制Android權限的辦法。惋惜的是,幾乎全部的手段都須要對設備進行Root,若是不這麼作,則須要付出不小代價。
App Shield(國內常見的名字:權限修改器)
它是一個須要付費的Android應用,其原理是修改應用程序的apk安裝包,刪除其中AndroidManifest.xml文件內,用於聲明權限的 對應"Android.Permission.*"條目,而後再用一個公開的證書對安裝包從新簽名(須要容許"未知源"),這樣一來,應用程序就不會向系 統申請原先所需的權限。當應用運行至相應的流程時,系統將直接拒絕,從而達到用戶控制權限的目的。
對於已安裝的應用,AppShield也會按照一樣方法制做好apk安裝包,而後讓用戶先卸載原始的應用,再安裝調整過的應用。除了該應用數字簽名外,用戶能夠隨時經過執行一樣的流程,將吊銷的權限恢復。
4 自啓動的控制
Android對後臺服務有着最好的支持。
在Android中能夠自由地開發一種稱爲'Service'的後臺運行的對象,加上沒有蘋果公司對應用程序的嚴格限制。諸如QQ掛機,即時調用第三方應用程序之類的形式均可以輕易實現。
爲了全面支持後臺服務,也爲了適應移動設備資源緊張,不得不常常清理內存的問題,應用可在系統中設置觸發器,當系統發生了某個特定特定事件時(系統啓動,撥打電話,收發信息,安裝、卸載應用,插上電源等,或應用程序自行定義的事件),就會觸發啓動應用程序。
5 其餘
Root帶來的風險
有一個鑽牛角尖的說法認爲,一旦對設備進行了Root,便無安全一說,只要惡意程序一旦偷偷得到Root級別,一切都是空談。
這種說法之因此鑽牛角尖,是由於:一方面Android中的Root權限一般都是須要用戶經過Superuser應用進行受權的,這已經夠用,雖然不能 期望Superuser無懈可擊;另外一方面,控制Android權限主要是爲了讓應用程序在"灰色地帶"的行爲收斂一些,它們實際顯然不是病毒等犯罪軟 件。
點擊原文地址查看詳細