我有2个申请
如果我使用服务,我可以设置权限,因此只有app1
可以向app2
发送意图:
在app2
(protection level: signature
)中定义权限,以及
在app1
中使用该权限
app2
中的服务受该权限保护
这样,只有app1
可以向app2
上的服务发送意图,
没有其他应用程序(除非我的签名被泄露)可以发送意图
app2
上的服务。
我可以对广播接收器做同样的事吗?
根据我的理解,使用sendBroadcast(意图,权限),
应用程序不需要"使用"许可。含义任何应用
可以向app2
发送意图。仅检查这些权限参数
app2
,以避免其他应用程序接收此意图。
(如果我删除app2
,并使用相同的权限字符串安装假app2
已定义,假app2
可以从app1
获得意图,这是意外的)
现在,我可以设置其他权限:
同样,如果删除app1
,请使用相同的假app1
进行安装
权限,然后假app1
可以向app2
发送虚假意图。
我该怎么做才能防止app2
收到虚假意图?
由于
答案 0 :(得分: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>
...