在aapt --rename-manifest-package之后防止服务冲突

时间:2014-03-05 15:59:22

标签: android android-service aapt

我正在创建一个白色标签的应用程序。我使用--rename-manifest-package选项通过aapt运行项目。

这让我写 com.foobar

并发布

com.foobar.demo com.foobar.extended 版本将安装在同一台设备上。

但是,即使服务是通过权限android:permission =“@ string / permission_name”(每次安装更改)和android:exported =“false”设置的,每个应用程序都想调用其他应用程序服务!

即。当我启动 com.foobar.extended 时,我得到一个安全例外,因为它没有 com.foobar.demo 服务的权限!

似乎-rename-manifest-package不会更改服务意图过滤器,因此它们仍然是 com.foobar.services.X ,这意味着一个应用程序服务具有更高的优先级来处理意图。

如何防止此问题? (也许是一个startLocalService(),它不会在应用程序之外发送意图...)

谢谢,

约翰

1 个答案:

答案 0 :(得分:0)

您尚未提供清单文件的副本,但我猜您在那里使用了绝对名称,而您应该使用相对名称。

而不是

<service android:name="com.foobar.demo.service" />

你应该使用

<service android:name=".service" />

(请注意,名称以句点开头)。