Android中自定義權限permission

Android中權限是什麼概念呢?

首先一點,權限是針對於Android組件來說的,同時權限在不同應用間才起作用。

Android權限就相當於一把鎖,將Android組件鎖上,只有應用內的組件以及有權限的不同應用可以訪問。

  Android中的運行時安全性檢查是在進程級別和操作級別上進行的。在進程級別,Android禁止一個應用程序直接訪問另一個應用程序的數據。實現方法是,每個應用程序都在不同的進程中運行,使用唯一且固定的ID。在操作級別上,Android定義了一組受保護的功能和資源。要使用應用程序能夠訪問此信息,必須向  AndroidManifest.xml 文件添加一個或多個權限請求。也可以爲應用程序定義自定義權限。

Android程序之間如何相互訪問資源?

  1.Android組件本身提供了一種方法可以將自身公佈出去,以便其他應用可以訪問這些組件。

  在AndroidMainfest.xml文件中找到要公佈的組件,然後加上一個屬性Android:exported = "true",將組件公佈出來,默認情況爲false。

  2.訪問公佈組件,例如Activity的訪問:

示例代碼:Intent intent = new Intent();
    intent.setComponent(new  ComponentName("com.example.testandroiddemo","text.TextActivity"));//參數介紹,第一個是 //程序的包名,第二個Activity的路徑
   startActivity(intent);

至於其他公佈組件的訪問,可以自行上網上查找,一般都是先獲得程序的包,在獲得資源路徑。

完成以上兩步即可完成不同應用程序之間的資源訪問。


上述步驟雖然很簡單就實現了不同應用之間的資源訪問,但是有一個問題出現了,我把程序公佈出去後,其他應用只需要知道我的程序包名,和資源路徑,就可以訪問其資源了。感覺不太安全啊。於是Android提供了permission讓開發人員可以針對自身的應用加上一道鎖,只有知道鑰匙的人纔可以訪問。下面我們就來學習一下permission的一些使用方法。


Android中permission的使用步驟:

1.定義permission,在自己應用的mainfest文件里加上一下代碼,記得在application標籤外哦。

 <permission android:name="com.example.testandroiddemo.ACTIVITY_PERMISSION" 
        android:protectionLevel="
normal" >
    </permission>

權限屬性介紹:

android:protectionLevel屬性值分四個級別:

normal:低風險權限,在安裝的時候,系統會自動授予權限給 application。
dangerous:高風險權限,系統不會自動授予權限給 app,在用到的時候,會給用戶提示。
signature:簽名權限,在其他 app 引用聲明的權限的時候,需要保證兩個 app 的簽名一致。這 樣系統就會自動授予權限給第三方 app,而不提示給用戶。
signatureOrSystem:這個權限是引用該權限的 app 需要有和系統同樣的簽名才能授予的權限,一 般不推薦使。
ndroid:permissionGroup 屬性值雖然在這裏沒有使用但還是介紹一下,看它的名字就知道,它的功能呢個 其實就是將permission進行分組,將同一類權限分到一個組裏。

2.將權限加入到組件中。
 <activity
            android:name="text.TextActivity"
            android:exported="true" 
            android:permission="com.example.testandroiddemo.ACTIVITY_PERMISSION">
       </activity>
3.另一個應用訪問TextActivity組件。
只需要在該應用的manifest文件中加入獲得權限:
<uses-permission android:name="com.example.testandroiddemo.ACTIVITY_PERMISSION" />
完成以上3步即可完成自定義權限的使用。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章