Android 防止aapt--重命名清单包后发生服务冲突
我正在创建一个白色标签的应用程序。我使用--rename manifest包选项通过aapt运行该项目 这允许我写作 com.foobar 释放 在同一设备上安装com.foobar.demo和com.foobar.extended版本 然而,即使这些服务是通过权限android:permission=“@string/permission\u name”(每次安装都会更改)和android:exported=“false”设置的,但每个应用程序都希望调用其他应用程序服务 也就是说,当我启动com.foobar.extended时,我会收到一个安全异常,它没有com.foobar.demo服务的权限 似乎-rename manifest包不会更改服务意图过滤器,因此它们仍然是com.foobar.services.X,这意味着一个应用程序服务在处理意图时具有更高的优先级 我如何防止这个问题?(可能是一个StartOcalService(),它不会将意图发送到应用程序外部…) 谢谢Android 防止aapt--重命名清单包后发生服务冲突,android,android-service,aapt,Android,Android Service,Aapt,我正在创建一个白色标签的应用程序。我使用--rename manifest包选项通过aapt运行该项目 这允许我写作 com.foobar 释放 在同一设备上安装com.foobar.demo和com.foobar.extended版本 然而,即使这些服务是通过权限android:permission=“@string/permission\u name”(每次安装都会更改)和android:exported=“false”设置的,但每个应用程序都希望调用其他应用程序服务 也就是说,当我启动co
John您没有提供清单文件的副本,但我猜您在那里使用了绝对名称,而您应该使用相对名称 而不是
<service android:name="com.foobar.demo.service" />
你应该使用
<service android:name=".service" />
(请注意,名称以句号开头)。我在AndroidManifest.xml文件中使用相对服务名称。但是,当我启动服务时,我会使用字符串操作。例如“com.foobar.services.MyService”-重命名清单包将不知道如何更改用于启动服务的内部字符串。在清单中使用相对名称的原因是,您可以在运行时使用
context.packageName()+“.service”