android apk與apk 之間互相通訊--如何自訂許可權

來源:互聯網
上載者:User

標籤:

在android系統的安全模型中,應用程式在預設的情況下不可以執行任何對其他應用程式,系統或者使用者帶來負面影響的操作。如果應用需要執行某些操作,就需要聲明使用這個操作對應的許可權。 (在manifest檔案中 委任標記) 
 
   android 系統提供了一系列這樣的許可權,具體可以查看android 許可權,另外,android系統在新的版本中會增加一些permission,可以查看android 版本資訊。 
 
   當然,app也可以自訂屬於自己的permission 或屬於開發人員使用的同一個簽名的permission。定義一個permission 就是在menifest檔案中添加一個permission標籤。


  1 <permission android:description="string resource" 
  2         android:icon="drawable resource" 
  3         android:label="string resource" 
  4         android:name="string" 
  5         android:permissionGroup="string" 
  6         android:protectionLevel=["normal" | "dangerous" |"signature" | "signatureOrSystem"] /> 
  7
下面對各參數做一個簡單說明:


    android:description :對許可權的描述,一般是兩句話,第一句話描述這個許可權所針對的操作,第二句話告訴使用者授予app這個許可權會帶來的後果 
    android:label: 對許可權的一個簡短描述 
    android:name :許可權的唯一標識,一般都是使用 報名加許可權名 
    android:permissionGroup: 許可權所屬許可權組的名稱 
    android:protectionLevel: 許可權的等級, 
    normal 是最低的等級,聲明次許可權的app,系統會預設授予次許可權,不會提示使用者 
    dangerous  許可權對應的操作有安全風險,系統在安裝聲明此類許可權的app時會提示使用者 
    signature  許可權表明的操作只針對使用同一個認證簽名的app開放 
    signatureOrSystem  與signature類似,只是增加了rom中內建的app的聲明 
    android:name 屬性是必須的,其他的可選,未寫的系統會指定預設值


    下面通過指定一個BroadcastReceiver的許可權來實驗 
    首先建立了兩個app,app A ,app B ; 
    app A中註冊了一個BroadcastReceiver ,app B 發送訊息 
    app A的menifest檔案:


  1 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  2     package="com.example.testbutton" 
  3     android:versionCode="1" 
  4     android:versionName="1.0" > 
  5     <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> 
  6     <!-- 聲明許可權 --> 
  7     <permission android:name="com.example.testbutton.RECEIVE" /> 
  8     <application 
  9         android:icon="@drawable/ic_launcher" 
 10         android:label="@string/app_name" 
 11         android:theme="@style/AppTheme" > 
 12         <activity 
 13             android:name=".MainActivity" 
 14             launcheMode="singleTask" 
 15             android:configChanges="locale|orientation|keyboardHidden" 
 16             android:screenOrientation="portrait" 
 17             android:theme="@style/android:style/Theme.NoTitleBar.Fullscreen" >
 18             <intent-filter> 
 19                 <action android:name="android.intent.action.MAIN" /> 
 20                 <category android:name="android.intent.category.LAUNCHER" /> 
 21             </intent-filter> 
 22         </activity> 
 23         <!-- 註冊Broadcast Receiver,並指定了給當前Receiver發送訊息方需要的許可權 --> 
 24         <receiver 
 25  android:name="com.example.testbutton.TestButtonReceiver" 
 26  android:permission="com.example.testbutton.RECEIVE" > 
 27             <intent-filter> 
 28                 <action android:name="com.test.action" /> 
 29             </intent-filter> 
 30         </receiver> 
 31     </application> 
 32 </manifest>
    app B 的menifest 檔案內容


  1 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  2     package="com.example.testsender" 
  3     android:versionCode="1" 
  4     android:versionName="1.0" > 
  5     <uses-sdk 
  6         android:minSdkVersion="7" 
  7         android:targetSdkVersion="15" /> 
  8     <!-- 聲明使用指定的許可權 --> 
  9     <uses-permission android:name="com.example.testbutton.RECEIVE" /> 
 10     <application 
 11         android:icon="@drawable/ic_launcher" 
 12         android:label="@string/app_name" 
 13         android:theme="@style/AppTheme" > 
 14         <activity 
 15             android:name=".MainActivity" 
 16             android:label="@string/title_activity_main" > 
 17             <intent-filter> 
 18                 <action android:name="android.intent.action.MAIN" /> 
 19                 <category android:name="android.intent.category.LAUNCHER" /> 
 20             </intent-filter> 
 21         </activity> 
 22     </application> 
 23 </manifest>
    這樣app B 給app A 發送訊息,A就可以收到了,若未在app B的menifest檔案中聲明使用相應的許可權,app B發送的訊息,A是收不到的。 
 
    另外,也可在app B 的menifest檔案中聲明許可權時,添加android:protectionLevel=“signature”,指定app B只能接收到使用同一認證簽名的app 發送的訊息。


    兩個安卓APP之間的資料的相互調用是我們經常會遇到的問題,本文主要介紹的安卓開發自訂許可權問題希望對廣大安卓開發人員有所協助。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

android apk與apk 之間互相通訊--如何自訂許可權

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.