2012-03-02 22 views
6

2 tane uygulama sahibim.
app2 (protection level: signature) 'de iznini tanımlayın ve app1 bu izni kullanın: Ben hizmetini kullanıyorsanız
, ben bu yüzden sadece app1app2 niyetiyle gönderebilir izin ayarlayabilirsiniz.
app2 numaralı hizmet, bu izinle korunmaktadır. Bu şekilde
, sadece app1app2, bir hizmet vermek için bir amaç gönderebilir ve (imzam sızdırılmış sürece) başka hiçbir uygulaması app2 üzerinde servise niyet gönderebilir.Belirli bir uygulamadan Android Broadcast Alıcısını Kısıtlama

Yayın Alıcısı ile aynısını yapabilir miyim?

  • app1: sendBroadcast (niyet, izni)
  • app2: bu izni kullanın izin tanımlar.

SendBroadcast (amaç, izin) kullanma konusundaki anlayışım için, uygulamasının izni "kullanması" gerekmez. Anlamı HERHANGİ başvuru app2 niyeti gönderebilir. Bu izin parametreleri, diğer uygulamaların bu amacı almasını önlemek için yalnızca app2 numaralarına karşı kontrol edilmiştir. Uygulama izni tanımlamak ve ona kendini kullanırsanız ProtectionLevel,

BTW (I app2 kaldırmak ve tanımlanmış Aynı izin dize ile sahte app2 yüklerseniz, app2 sahte beklenmedik app1 gelen niyeti, alabilirsiniz) (imzanın) hiçbir anlamı yok gibi görünüyor. Bu doğru mu? , Izin tanımla bu izni kullanın:

  • Uyg1:

    Şimdi, ek izin ayarlayabilirsiniz.

  • app2: Yalnızca bu izinle sınırlı olan alıcı. biri app1 kaldırır eğer

Yine, aynı izni ile app1 sahte yükler, sonra sahte app1app2 sahte niyet gönderebilir. app2'un sahte amaçla alınmasını önlemek için ne yapabilirim?

Teşekkür

+0

etiket ayrıca yayıncıların sahip olması gereken izni tanımlayabilir, bkz. http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn –

cevap

5

da seni böyle bir kodlama yetkisiz yayınları uydu alıcınızı korumalı anlamına gelir http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn

bkz yayıncılar olması gereken izni tanımlayabilirsiniz tag:

... 
<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> 
...