我与朋友讨论过,他告诉我一些应用程序可以在Android上安装,而菜单中没有显示任何活动或图标。因为我也在研究机器人,所以我很惊讶,因为我从来没有听说过。
应用程序的名称显示在“管理应用程序”部分,并且易于卸载。
所以现在我要问程序员。如何(如果是)安装这种应用程序是可能的? (没有活动或发射器)。
答案 0 :(得分:10)
只需从清单中删除以下所有意图过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
请注意,从Android 3.1开始,如果用户没有手动操作,您的应用将不会收到任何广播,也不会列在其中有意图过滤器可用的任何其他地方(例如在共享菜单中)从启动器至少打开一次您的应用UI(主活动)。
答案 1 :(得分:5)
即使在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”,但它无法正常工作,第三方应用程序无法获得此权限
4 - 该图标仅在重启启动器时消失,因此在下次手机重启时很可能会强制启动启动器不建议
通过这种方式,App必须至少按时运行。
参考:
答案 2 :(得分:2)
是的,这种应用是可能的。您必须在清单文件中创建一个没有Launcher活动的应用程序。
例如: - 您可以在收到启动时注册广播。因此,当设备启动时,您的应用程序将被调用,尽管它没有任何UI。您可以结帐this一个。
NOTE
- 此类应用程序仅适用于3.1。