我和一位朋友讨论过,他告诉我,一些应用程序可以安装在 android 上,而无需在菜单中显示任何活动或图标。因为我也在学习android,所以我很惊讶,因为我从来没有听说过。
应用程序的名称显示在“管理应用程序”部分,并且很容易卸载。
所以现在我作为程序员问。(如果是的话)如何安装这种应用程序?(没有活动或启动器)。
我和一位朋友讨论过,他告诉我,一些应用程序可以安装在 android 上,而无需在菜单中显示任何活动或图标。因为我也在学习android,所以我很惊讶,因为我从来没有听说过。
应用程序的名称显示在“管理应用程序”部分,并且很容易卸载。
所以现在我作为程序员问。(如果是的话)如何安装这种应用程序?(没有活动或启动器)。
只需从清单中删除以下所有意图过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
请记住,尽管从 Android 3.1 开始,如果用户没有手动打开您的应用,您的应用将不会接收任何广播,也不会列在意图过滤器使其可用的任何其他位置(例如在共享菜单中) UI(主活动)至少一次来自启动器。
还有另一种方法,即使在 Android3.1+ 上也可以使用。您不能禁用图标本身,但可以禁用应用程序的一个组件。因此禁用应用程序启动器活动将导致其图标从启动器中删除。
执行此操作的代码很简单:
ComponentName componentToDisable =
new ComponentName("com.helloandroid.apptodisable",
"com.helloandroid.apptodisable.LauncherActivity");
getPackageManager().setComponentEnabledSetting(
componentToDisable,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
关于这个解决方案有几点需要了解:
1-禁用的组件将无法以任何方式启动
2-其他非禁用活动将可以从其他应用程序启动
3-一个应用程序只能禁用它自己的组件。有一个权限“android.permission.CHANGE_COMPONENT_ENABLED_STATE”,但它不起作用,第3方复制不能有这个权限
4-图标只会在启动器重新启动时消失,因此很可能在下次手机重新启动时,不建议强制启动器重新启动
这样,应用程序必须至少按时运行。
参考:
是的,这种应用是可能的。您必须在 Manifest 文件中创建一个没有 Launcher Activity 的应用程序。
例如:-您可以在收到的启动时注册广播。因此,当设备启动时,您的应用程序将被调用,尽管它没有任何 UI。你可以看看这个。
NOTE
- 这种类型的应用程序只能在 3.1 以下工作。