2013-04-12 64 views
1

我試圖實現只接收來自特定應用程序的廣播的「安全」廣播接收機。這是因爲我想爲我的應用製作插件,通過廣播觸發操作。由於這些行爲(部分)是明智的,因此檢查發件人是否真的是我的應用程序將會很好。據我所見,不可能檢查發件人包裹? 爲此定義自定義權限是否安全?如果是的話,我該怎麼做?還有什麼其他的可能性來實現這個目標?Android使廣播接收機安全

在此先感謝!

回答

10

定義自定義權限是否安全?

如果這兩個應用程序和插件是由你而寫的,用android:protectionLevel="signature"自定義權限,似乎是你的問題的理想解決方案。沒有應用程序將不能發送廣播到您的接收器沒有持有該權限,只能由相同的簽名密鑰簽署的應用程序保持。作爲獎勵,用戶不必在安裝時同意該許可。

專業提示:在應用程序和插件中定義<permission>元素,因此這兩者的安裝順序無關緊要。

請注意,custom permissions have a security flaw之前的Android 5.0,和on Android 5.0+ no two apps can define the same permission unless they are signed by the same signing key

+0

謝謝,這似乎是理想的解決方案! :) – Fleckdalm

+0

固體專業提示墨菲先生。謝謝! – worked

+0

@worked:感謝您的評論,因爲它向我指出我需要更新此答案。 – CommonsWare

0

在你的清單定義自定義權限:

<permission android:name="com.example.myapp.permission.NAME" 
    android:protectionLevel="normal" /> 

接收器上,添加許可屬性:

<receiver android:name="MyReceiver" 
    android:permission="com.example.myapp.permission.NAME" /> 
+1

'android:protectionLevel =「normal」'將允許任何應用程序持有該權限,但須經用戶批准。這可能是OP想要的,儘管它似乎不是基於這個問題。 – CommonsWare