【发布时间】:2012-05-15 11:48:11
【问题描述】:
我创建了一个通过AIDL被其他应用绑定的服务,我把它添加到manifest中如下:
<service android:name=".MyService">
<intent-filter>
<action android:name="org.example.android.myservicedemo.IService" />
</intent-filter>
</service>
其中 IService 是 AIDL 接口。
这样,Eclipse 向我显示警告导出的服务不需要权限。如果我删除intent-filter,警告就会消失,但显然应用程序无法绑定到服务。
这个警告是什么意思?
【问题讨论】:
-
这意味着用户在他的手机上拥有的其他(任意)应用程序可以绑定到您的
Service并调用通过您的 AIDL 接口公开的任何方法。 -
在您的 AndroidManifest.xml 中创建一个新的 <permission> 并将其名称用作您的
<service>声明的android:permission属性。或者只是忽略警告 - 服务的目的是什么?如果您可以将服务保持为“内部”,那么只需在您的<service>上设置android:exported="false"会更容易 -
然后忽略警告或添加
,如果它们都是您自己使用相同证书签名的应用程序,则使用“签名”,否则使用“正常”。 -
您已经在使用(发布)证书对您的应用程序进行签名 - 签名保护会检查请求权限的应用程序是否与定义权限的应用程序具有相同的签名。
-
@Jens 谢谢......它帮助了我......顺便说一句,你可以添加你的 cmets 作为答案。让 enzom83 接受它。