从活动启动Android init.rc服务

从活动启动Android init.rc服务,android,android-activity,init,Android,Android Activity,Init,在我开始之前,这是为了我们自己的基于android的设备,而不是手机,也不是部署在其他地方 我们在init.rc中有一个服务,它是一个postgresql数据库服务器。这将在启动时启动,并始终在系统后台运行。然而,它可能会关闭,我们希望有一种方法可以从系统的android端停止并启动这项服务 有没有办法从android活动发送init start命令?从根shell中,这相当于运行“start servicename”和“stop servicename”。要启动init.rc文件中声明的服务,

在我开始之前,这是为了我们自己的基于android的设备,而不是手机,也不是部署在其他地方

我们在init.rc中有一个服务,它是一个postgresql数据库服务器。这将在启动时启动,并始终在系统后台运行。然而,它可能会关闭,我们希望有一种方法可以从系统的android端停止并启动这项服务


有没有办法从android活动发送init start命令?从根shell中,这相当于运行“start servicename”和“stop servicename”。

要启动init.rc文件中声明的服务,我认为必须使用以下命令更改“ctl.start”系统属性:

property_set("ctl.stop", "<service_name>");
在c文件中:

property_set("ctl.start", "<service_name>");
并由您的系统密钥签名(或将平台放在Android.mk中)

您可以猜到,要停止服务,请使用以下命令:

property_set("ctl.stop", "<service_name>");
property_集(“ctl.stop”,简称“);

SystemProperties.set(“ctl.stop”,”);

很抱歉,我直到现在才注意到这一点。“把平台放在Android.mk中”是不是只有在Android上运行的C应用程序才能使用?至于系统密钥,这是否意味着你必须为你将要部署的每个系统分别构建APK?我猜是系统密钥,这意味着如果我们想利用这种方法启动服务,我们需要为硬件构建整个android系统。我认为这将使它在目前对我们的需求几乎毫无用处,因为我们没有足够的硬件驱动程序来自己构建它,我们依赖于SoM的制造商来构建它。不过,谢谢你的回答。我会和SoM的制造商联系,看看他们是否能给我们提供一个包含驱动程序的更完整的构建树。
property_set("ctl.stop", "<service_name>");
SystemProperties.set("ctl.stop", "<service_name>");