萬盛學電腦網

 萬盛學電腦網 >> 手機應用 >> 安卓教程 >> 5種控制Android應用的權限的方法

5種控制Android應用的權限的方法

  這篇文章目的在於介紹Android系統上控制權限的方法,讀者只要使用過Android,或是對智能機平台有所了解,就能看懂,不需要專門的編程知識。

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

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

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

5種控制Android應用的權限的方法 三聯

  圖1 Android 官方市場會強制提醒用

  Andoird哪裡開放了?

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

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

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

圖2, Android開源計劃的標志

  圖2 Android開源計劃的標志

  開放的風險

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

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

圖3 Android 允許未知安裝未知來源的應用程

  圖3 Android 允許未知安裝未知來源的應用程

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

圖4 亞馬遜的 Kindle Fire 僅允許通過自帶的市場安裝應用

  圖4 亞馬遜的 Kindle Fire 僅允許通過自帶的市場安裝應用

  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”對象。

圖5 搜狗輸入法的智能聯系人功能

  圖5 搜狗輸入法的智能聯系人功能

copyright © 萬盛學電腦網 all rights reserved