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屬性值分四個級別:
android:name="text.TextActivity"
android:exported="true"
android:permission="com.example.testandroiddemo.ACTIVITY_PERMISSION">
</activity>