Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android自定義權限permission

Android自定義權限permission

編輯:關於Android編程

Android是一種特權分隔的操作系統,在Android上運行的每個應用程序都具有各自獨立的系統標識(Linux用戶ID和組ID)。系統各部分有不同的身份標識。因此,Linux上運行的各個應用程序相互獨立且與系統無關。


Android的“權限許可”機制通過限定特定的進程能夠執行的指定操作和限定對每一個資源點對點的訪問的URI許可來提供附加細粒度的安全功能。


由於內核讓每個應用程序運行在獨立的沙盒中,應用程序必須通過聲明所需要而沙盒沒有提供的權限來明確的分配資源和數據。Android沒有采用會使用戶體驗復雜並且不利於安全的動態授權機制。應用程序靜態的聲明他們所需要的權限,在程序安裝時Android系統會提示用戶同意它們獲取這些權限。


Android權限模型是基於如下兩個目標而設計的:
通知用戶:

通過列出應用程序可能執行的所有敏感的操作,讓用戶更多地意識到安裝這個應用存在的潛在風險。這假定用戶會閱讀在安裝時彈出的權限列表,並基於這些信息來作出是否安裝應用的決定。
降低風險:
通過限制應用程序訪問Android系統敏感的API接口,來降低應用程序對整個系統帶來的傷害(比如病毒)。


Android權限被分為四個等級:
普通級:

這些權限並不能真正傷害到用戶(比如更換壁紙),當程序需要這些權限是,開發者不需要指定程序會自動賦予這些權限。
危險級:

這些權限可能會帶來真的傷害(比如打電話,打開網絡鏈接等),如果要使用它們需要開發者在AndroidManifest.xml中聲明對應的權限。
簽名級:

如果應用使用的是相同的簽名證書時,這些權限會自動授予給聲明或者創建這些權限的程序。設計這一層級權限的目的是方便組件間數據共享。
簽名/系統級:

和簽名級一樣,例外的是系統鏡像是自動獲取這些權限的,這一層級是專為設備制造商設計的。


在開發Android應用程序的過程中,如果我們要使用系統的某些服務(比如網絡、待機、讀寫文件權限等)都需要首先像下面這樣在AndroidManifest.xml中聲明對應的權限,然後才可以在代碼中訪問這些服務:


    
    
    

    
    
    
    
    
    
    
    
    
同樣,除了能夠使用Android系統提供的各種權限外,我們還可以自定義權限來限制其它程序訪問應用的各種服務或者組件。任何程序想要和此程序的組件交互時,都需要聲明相應的權限時才能成功地訪問。


自定義權限步驟如下:

以為一個服務CalledService定義訪問權限為例,具體步驟如下:

1、在被調用程序Called的AndroidManifest.xml文件中作如下定義:


    
    

關於各標簽屬性的意義自行腦補,都是見名知意。


            
                
                
            
        

2、在需要調用該組件的應用程序Call工程的AndroidManifest.mxl文件中聲明對應的權限:


3、在需要調用該組件的應用程序Call工程中啟動、停止改服務:

case R.id.startServiceBtnId:{
			Intent intent = new Intent( "com.uperone.action.SERVICE" );
			startService(intent);
		}
		break;
特別注意:如果在調用需要權限的組件時沒有在Manifest.xml中聲明權限,則會在運行對應代碼段時報異常!!!!

更多組件自定義權限參見實例:Android自定義權限permission


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