在没有 activity 的情况下启动服务(但使用 root)

Start Service on boot without activity (but with root)

我只想为我的 phone 创建一个始终在后台运行的应用程序 - 你永远不应该从 运行 停止该服务。 我的目标是,此应用程序将当前位置数据发送到我家中的计算机 - 以便在它被盗或丢失时找回它。

问题是,没有 activity and/or 启动器图标就无法启动服务(因为窃贼应该不知道这一点)。

但是:我的 phone 已经 root 了,所以是否可以启动服务?

另外:当我将 APK 放入 /system/app 分区时,恢复出厂设置后 APK 是否会保留?

是的,你可以。根植 phone 与您想做什么无关紧要,如果有人试图将您的 phone 恢复出厂设置,如果您将 apk 放入 /system/app,您的应用仍不会被删除] 按你说的分区。它会像普通系统应用程序一样做出反应。但是,当然,在将应用程序移动到系统文件夹时,您还必须为您的应用程序设置正确的权限才能正常工作。

并且为了防止小偷知道您的应用程序,您可以只使用不明确的名称来命名您的应用程序,并且不要使用描述您的应用程序功能的图标,因为您的应用程序仍然可以在您的应用程序管理器中从您的 phone 设置。除此之外,您还可以执行以下操作:

要创建一个在主页启动器中没有图标的应用程序,只需从 AppManifest.xml.

中删除 activity 的 intent 过滤器 android.intent.category.LAUNCHER

要实现您的后台应用程序,这在很大程度上取决于您想要做什么。您可以为 运行 长任务创建 ServiceBroadcastReceiver 以使用意图过滤器对特定事件或活动做出反应。

编辑:

为了让您的应用程序自动运行,您必须将您的应用程序放在这个文件夹中/system/priv-app。这样,您的应用程序将在您每次启动设备时启动。