Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android手機 >> Android手機教程 >> 進階使用 >> 關於Android應用權限控制的方法匯總

關於Android應用權限控制的方法匯總

編輯:進階使用

  Android應用都需要開啟一定的權限的,安裝的時候需要,運行的時候也需要,權限在Android系統中有非常重要的作用,本文就大家帶來了Android系統上控制權限的方法。

關於Android應用權限控制的方法匯總
關於Android應用權限控制的方法匯總

  1 為什麼Android總是事無巨細地告訴你應用索取的每一項權限?

  相比Apple,Microsoft嚴格控制生態系統(從蘋果給開發者的“App Store Guideline”可見一斑),只允許通過官方應用商店安裝應用,並對每份上傳進行仔細地審查而言,Android的開放就意味著,Google需要向 用戶提供一系列用於為自己負責的流程、工具。所以在安裝應用前,Android總是要事無巨細地告訴你,應用肯需要控制什麼權限。

  同樣,開發者也制作了一系列易用的工具,用以鑒別可疑的應用程序,或是控制權限。

  Andoird哪裡開放了?

  在Android中,用戶能自由從本地安裝應用,自由地對SD卡進行操作,自由選擇應用市場。

  如果願意放棄保修,用戶還能輕易地實行root,解鎖基帶(baseband)。只有一些產品會嚴密地鎖定bootloader(如摩托羅拉)。

  最重要的是,因為ASOP(Android源代碼開放計劃)的存在,絕大部分的Android代碼都是開源的,開發者可以由此對Android系統進行 深入的修改,甚至可以自行編寫一個符合Android規范的系統實例(如Cyanogen Mod)。正是因為ASOP,這篇文章才可能介紹多達5種原理不同的權限控制方法。

  圖2 Android開源計劃的標志

  開放的風險

  不考慮Symbian,Windows Phone 6.5(及以下)平台,那麼幾乎所有的智能手機病毒都是Android平台的,甚至官方Android Market也鬧過幾次烏龍。在國內水貨橫行的市場,情況更是火上澆油,不法業者可以在手機的ROM,甚至是bootloader中做好手腳,讓用戶有病無法醫。

  在Android中,用戶可以允許系統安裝來自“未知源”(也就是非Google官方的,或手機預置市場的)應用程序。於是,移動平台最重要的門神------數字簽名就被繞過了。

  出於Android的開放性,也有不允許“未知源”的反例:亞馬遜的Kindle Fire平板使用了深度定制的Android,它只允許安裝來自亞馬遜官方商店的應用程序。

  2 Android有哪些“權限”

  首先需要明確一下Android中的種種“權限”。Android是在Linux內核上建立一個硬件抽象層(Android HAL),通過Dalvik以及各種庫來執行android應用的。在手機啟動時,首先需要由Bootloader(HTC手機上稱作Hboot)引導 Linux及手機上各個硬件設備的驅動程序,之後才啟動Android系統。所以其實我們會涉及到四種不同涵義的權限:

  Android權限(Permission)

  這指Android中的一系列“Android.Permission.*”對象,是本文的中心內容。

  Google在Android框架內把各種對象(包括設備上的各類數據,傳感器,撥打電話,發送信息,控制別的應用程序等)的訪問權限進行了詳細的劃 分,列出了約一百條“Android.Permission”。應用程序在運行前必須向Android系統聲明它將會用到的權限,否則Android將會 拒絕該應用程序訪問通過該“Permission”許可的內容。

  比方說,搜狗輸入法提供了一個智能通訊錄的功能,用戶可以在輸入聯系人 拼音的前幾個字符,或首字母,輸入法就能自動呈現相關聯系人的名字。為了實現這個功能,輸入法必須聲明它需要讀取手機中聯系人的能力,也就是在相關代碼中 加上聲明“android.permission.READ_CONTACTS”對象。

  原生Android只提供了對“一刀切”式的管理,要麼同意使用,否則就根本就不安裝應用程序。當用戶遇到希望使用程序的同時,又想禁止部分Permission的場合,他就無路可走。

  於是,不少開發者就搗鼓出了“第三條道路”;可惜的是,沒有一種方法能同時做到既不需要將手機固件Root,又完全不涉及對原始應用程序進行反向工程的方法。

  Root

  Root指獲得Android所在的Linux系統的Root(根)權限,有了根權限,你才能對Linux做出任意的修改。iOS中的越獄 (Jailbreak) 相當於獲得iOS系統的Root權限(iOS是一種類Unix系統,和Linux都使用Root的概念)。在已Root的設備中,通常都是使用一個 叫“Superuser”(簡稱SU)的應用程序來向許可的程序授以Root權限。

  Bootloader的解鎖(Unlock)

  利用數字簽名,Bootloader可以限定只有正確簽名的系統可以被引導。在修改固件以獲得Root以前,解鎖Bootloader通常是必須的。安裝第三方修改、編譯的固件也需要解鎖Bootloader。

  基帶(Radio)解鎖

  在Android系統中,基帶是上層軟件與手機中無線設備(手機網絡,Wi-Fi,藍牙等)的驅動程序之間的中介。國外的網絡運營商很喜歡鎖定基帶,從 而保證用戶只能使用運營商自己指定的sim卡。在我國,鎖定基帶是非法的,手機制造商、網絡運營商也不可以通過鎖定基帶的方法對待違約客戶。iOS的“解 鎖”就是解鎖iOS中的基帶軟件。

  為什麼要控制Android權限

  魚和熊掌不可兼得,Android的世界有很多自由,壞人也能自由地做壞事。它的生態系統很強調自主:用戶可以自主地減小風險,僅使用官方市場的應用程序,也可以自主地解除安全限制,從而獲得更多自由。因此,在遇到壞事的時候,用戶也不得不自主一下:

  1, 抵制不道德,乃至非法行為

  幾乎所有的Android安全軟件都能對來電、信息進行控制,以減少騷擾。

  另一方面,很多應用都會要求它們實際功能以外的權限,表現在非(主動)告知地搜集設備序列號,位置信息,誘使用戶默認地上傳聯系人列表等方面。

  更壞一點的應用程序,則會踏入犯罪的范疇,比如能偷偷發出扣費信息,或是作為黑客的偷窺工具。

  2, 減少惡意軟件的損害

  惡意軟件即便潛伏成功,也難以獲得權限,從而減少損失。

  3, 用戶有權自主地在抑制應用程序的部分權限時,繼續使用該應用程序,而只承擔由於自行設置不當而帶來的後果。

  用戶擁有設備的所有權,因此有權自主控制設備上的內容、傳感器等對象的訪問;同時有權(不)運行,(不)編譯設備上的應用程序。

  大多數應用程序在運行時,並未達成主動告知的義務,是失誤;然而即使主動告知,用戶還是可以不理會。

  為什麼Android官方市場的強制提醒權限的行為不屬於主動告知:

  通過Android官方市場,“打包安裝器”安裝應用程序時,所顯示的“權限”僅是在安裝包內AndroidManifest.xml聲明的值,而非應 用程序實際上會調用的內容。該值僅用來表明Android系統能向應用授予的最大可能的權限。即便一個“Hello World”式的應用程序,也可以在AndroidManifest.xml中聲明所有可能的Android Permission。

  這就是說,在AndroidManifest.xml中聲明的值與應用程序實際調用的權限有關聯,但不等同,且這種提示是由Android系統負責實施的強制行為。

  正確的理解是:“應用程序(被迫地)讓Android系統告知用戶,它在AndroidManifest.xml中所聲明的事項。”

  這意味著應用程序在使用重要權限前,依然需要自行、主動地通知用戶相關事宜。

  然而,即便只是讓一半的應用程序達到以上的標准,也是不可能的。應用程序需要通過收集用戶信息,程序的錯誤日志。從而統計用戶的喜好,改進程序。另一方 面,這也是發送精確廣告但不追溯到用戶身份信息的方式,這一點對於免費應用而言,是極其重要的。我們之所以能知道不同型號手機的占有率,應用軟件的流行 度,是與這樣的統計不可分離的。

  一旦每個應用程序都專業地主動發出提醒,不專業的用戶(大多數用戶都是不專業的)通常會將之視為如同海嘯警報一般的危機。

  這麼做對誰都沒有好處------用戶方的隱私權是毋庸置疑的,然而應用程序方面的獲取信息記錄的需求也是無可阻擋的。如果每個用戶都打算阻止,只會落得被迫接受不平等條約的下場,在溫飽以前,不會有人考慮小康的問題。

  於是,現狀就變得有趣:用戶人享受著相同的服務;其中大部分用戶出於不知情/好意,默默地向開發者、廣告商提供了信息,剩下的少數用戶則能阻斷這種勞務。而作為維持Android平台的信息商人Google,只確保在它的地盤裡,不會發生觸碰底線的事情。

  一句話總結:

  設備是我的,不管你怎麼說,反正我說了算,但我說的話大多是不算數的。 上一頁123下一頁

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved