2012-03-02 99 views
6

我有2個應用程序。
如果我使用的服務,我可以設置權限,以便只有app1可以發送意圖app2
app2protection level: signature)定義權限, 使用許可,app1
app2中的服務受該權限的保護。
這樣,只有app1可以發送意圖服務的app2, 並沒有其他應用程序(除非我的簽名被泄露)可以發送意圖 服務上app2限制Android廣播接收器從特定的應用程序

我可以對廣播接收機做同樣的事嗎?

  • APP1:sendBroadcast(意向,許可)
  • APP 2:定義權限,使用權限。

爲了我對使用sendBroadcast(intent,permission)的理解, 應用程序不需要「使用」權限。意思任何應用程序 可以發送意向app2。這些許可參數僅針對 app2進行檢查,以避免其他應用程序收到此意圖。 (如果我刪除app2,並與定義的相同權限字符串 安裝假app2,假app2可以從app1的意圖,這是意想不到的)

順便說一句,如果應用程序定義的權限,並用它本身的 的ProtectionLevel (簽名)似乎沒有意義。這是真的?現在

,我可以設置其他權限:

  • APP1:定義權限,使用權限。
  • app2:Receiver僅限於該權限。

再次,如果一個刪除app1,安裝假app1有非常相同的 權限,則假app1可以發送僞造的意圖app2。 我能做些什麼來阻止app2接收虛假的意圖?

感謝

+0

標籤還可以定義廣播公司應具有的權限,請參閱http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn – 2012-03-02 09:33:54

回答

5

標籤還可以定義廣播公司應該具備哪些權限,請與http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn

我意味着你可以從未經授權的廣播通過編碼這樣的保護您的接收器:

... 
<permission android:name="com.yourapp.PERMISSION" 
    android:protectionLevel="signature" 
     android:label="@string/permission_label" 
     android:description="@string/permission_desc"> 
</permission> 
... 

<receiver android:name=".MyReceiver" 
    android:permission="com.yourapp.PERMISSION"> 
    <intent-filter> 
     <action android:name="com.yourapp.ACTION" /> 
    </intent-filter> 
</receiver> 
...