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

Android自定義權限和使用權限

編輯:關於Android編程

  自定義權限,主要用於保護被賦予權限的組件。如無權限與有權限,正如public與private的對類保護的區別   執行運行時安全性檢查      Android中的運行時安全性檢查是在進程級別和操作級別上進行的。在進程級別,Android禁止一個應用程序直接訪問另一個應用程序的數據。實現方法是,每個應用程序都在不同的進程中運行,使用唯一且固定的ID。在操作級別上,Android定義了一組受保護的功能和資源。要使用應用程序能夠訪問此信息,必須向  AndroidManifest.xml 文件添加一個或多個權限請求。也可以為應用程序定義自定義權限。    進程邊界上的安全性        在桌面環境中,大部分應用程序都使用相同的用戶ID 運行,與此不同的是,Android應用程序通常使用自己的唯一ID運行。通過使用不同的ID 運行每個應用程序,Android圍繞每個進程創建了一種隔離邊界。這能夠阻止一個應用程序直接訪問另一個應用程序。  盡管每個進程都具有邊界,但應用程序之間的數據共享顯然也可以實現,但必須顯示地進行共享。換句話說,要獲得另一個應用程序的數據,必須借助該應用程序的組件。例如,可以查詢另一應用程序的ContentProvider, 可以調用另一個應用程序中的活動,或者可以與另一個應用程序的服務通信。所有這些途徑都提供了在應用程序之間共享信息的方法,但它們顯式方式實現此目的,因為你不會訪問基礎數據庫、文件等內容。    下面我們來 使用自定義權限       Android支持為應用程序定義自定義權限。例如,如果希望阻止某些用戶啟動應用程序中的某個活動(也就是某個Activity),可以定義自定義權限來實現,要使用自定義權限,首先在AndroidManifest.xml 文件中聲明它們。定義了權限之後,可以將它們作為組件定義的一部分進行引用。  首先創建一個工程DefinePermission 修改MainActivity當前類,添加 [html]  Toast.makeText(this, "歡迎來到步步高的世界!", Toast.LENGTH_LONG).show();   修改AndroidManifest.xml文件 [html]   <manifest xmlns:android="http://schemas.android.com/apk/res/android"       package="com.lzx.definepermission"       android:versionCode="1"       android:versionName="1.0" >          <uses-sdk           android:minSdkVersion="8"           android:targetSdkVersion="15" />          <permission           android:name="com.lzx.permission.test"           android:label="@string/app_name"           android:permissionGroup="@string/hello_world"           android:protectionLevel="normal" >       </permission>          <application           android:icon="@drawable/ic_launcher"           android:label="@string/app_name"           android:theme="@style/AppTheme" >           <activity               android:name=".MainActivity"               android:label="@string/title_activity_main"               android:permission="com.lzx.permission.test" >               <intent-filter>                   <action android:name="android.intent.action.MAIN" />                      <category android:name="android.intent.category.LAUNCHER" />               </intent-filter>           </activity>       </application>      </manifest>     1、自定義權限 聲明的含義如下; android:label:權限名字,顯示給用戶的,值可是一個 string 數據,例如這裡的“自定義權限”。 android:description:比 label 更長的對權限的描述。值是通過 resource 文件中獲取的,不能直接寫 string 值,例如這裡的”@string/test”。 android:name:權限名字,如果其他 app 引用該權限需要填寫這個名字。 android:protectionLevel:權限級別,分為 4 個級別: normal:低風險權限,在安裝的時候,系統會自動授予權限給 application。 dangerous:高風險權限,系統不會自動授予權限給 app,在用到的時候,會給用戶提示。 signature:簽名權限,在其他 app 引用聲明的權限的時候,需要保證兩個 app 的簽名一致。這樣系統就會自動授予權限給第三方 app,而不提示給用戶。 signatureOrSystem:這個權限是引用該權限的 app 需要有和系統同樣的簽名才能授予的權限,一般不推薦使用。   2、為MainActivity加入啟動權限:android:permission="com.lzx.permission.test"     再建一個Client工程 修改xml添加一個button按鈕 修改MainActivity添加button點擊事件 [html]  ((Button) findViewById(R.id.button1))           .setOnClickListener(new View.OnClickListener() {               public void onClick(View v) {                   Intent intent = new Intent();                   intent.setClassName("com.lzx.definepermission",                           "com.lzx.definepermission.MainActivity");                   startActivity(intent);               }           });   修改AndroidManifest.xml文件 [html]   <manifest xmlns:android="http://schemas.android.com/apk/res/android"       package="com.lzx.client"       android:versionCode="1"       android:versionName="1.0" >          <uses-permission android:name="com.lzx.permission.test" />          <uses-sdk           android:minSdkVersion="8"           android:targetSdkVersion="15" />          <application           android:icon="@drawable/ic_launcher"           android:label="@string/app_name"           android:theme="@style/AppTheme" >           <activity               android:name="com.lzx.client.MainActivity"               android:label="@string/title_activity_main"               android:permission="com.lzx.permission.test" >               <intent-filter>                   <action android:name="android.intent.action.MAIN" />                      <category android:name="android.intent.category.LAUNCHER" />               </intent-filter>           </activity>       </application>      </manifest>   添加使用權限use-permission,使用剛才定義的permission 同時注意,給當前Activity也要加上訪問權限
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved