Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 防止aapt--重命名清单包后发生服务冲突_Android_Android Service_Aapt - Fatal编程技术网

Android 防止aapt--重命名清单包后发生服务冲突

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

我正在创建一个白色标签的应用程序。我使用--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(),它不会将意图发送到应用程序外部…)

谢谢


John

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

而不是

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

你应该使用

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


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

我在AndroidManifest.xml文件中使用相对服务名称。但是,当我启动服务时,我会使用字符串操作。例如“com.foobar.services.MyService”-重命名清单包将不知道如何更改用于启动服务的内部字符串。在清单中使用相对名称的原因是,您可以在运行时使用
context.packageName()+“.service”