【问题标题】:How to make an Android app only run background services, and not be launcheable?如何让安卓应用只运行后台服务,不能启动?
【发布时间】:2019-10-10 12:05:31
【问题描述】:

是否可以创建一个没有任何活动的应用程序?没有启动器图标,也没有 Play Store 上的“打开”按钮?喜欢这个https://my.pcloud.com/publink/show?code=XZUi3I7Z6yNkHyuBISL5XynlYYI8SjEJcoMk

我只需要它来创建后台服务。 我已经做了一些研究,但我没有发现任何关于此的信息。如果你能指点我一个方向(或告诉我这是不可能的)那就太好了! 干杯!

【问题讨论】:

  • 我认为您的应用在安装后不会收到通知以启动服务,并且我认为您在用户打开您的应用之前无法启动任何服务。
  • 我的意图是创建一个快速设置按钮。然后将切换所述服务。而且我知道一个应用程序可以在不打开的情况下创建一个快速设置按钮。快速设置按钮本身就是服务,所以是的......我认为这是可能的。我确信可以在不运行应用程序的情况下创建快速设置。我已经下载了执行此操作的应用程序。但它仍然有作为占位符的活动。

标签: android android-studio launcher android-launcher


【解决方案1】:

你说你不想使用半透明的 Activity,但这似乎是最好的方法:

1- 在您的 Manifest 中,将 Activity 主题设置为 Theme.Translucent.NoTitleBar.

2- 不要为你的 Activity 布局而烦恼,也不要打电话给setContentView().

3- 在您的 Activity 的 onCreate() 中,使用 startService() 启动您的服务。

4- 启动服务后,使用finish() 退出活动。

换句话说,您的 Activity 不必是可见的;它可以简单地确保您的服务正在运行然后退出,这听起来就像您想要的那样。

如何隐藏午餐图标:

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); // activity which is first time open in manifiest file which is declare as <category android:name="android.intent.category.LAUNCHER" />
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

无法隐藏打开按钮,因为我们谈论的是应用程序而不是谷歌库

如何取消隐藏图标:

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class);
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

重要提示:如果您需要在应用程序中的主要活动被隐藏时对其执行某些操作,这会有点棘手。你将面对ActivityNotFoundException。要使其正常工作,您应该在对主要活动进行任何操作之前取消隐藏图标,并在完成后再次隐藏它。

【讨论】:

  • 在没有午餐者的情况下如何启动服务来启动应用程序?
  • 你应该在第一次午餐后隐藏它,否则不可能,检查我的编辑
  • 好的,我会试一试,然后回复你 c: Ty!
猜你喜欢
  • 2020-01-22
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多