安装后隐藏Android应用程序图标

6
我看到在谷歌应用程序中有一些GPS应用程序,在安装后,该应用程序将没有图标显示,但将在后台运行服务。
我该如何实现这一点?

请查看此帖子上的回复:http://androidforums.com/developer-101/210047-hide-application-android-application-list.html。 - Mxyk
4个回答

6

要从启动器中移除应用程序,只需在 AndroidManifest.xml 中不包含这些主要活动的行。

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

如果你想要以编程的方式移除它,那么可以使用PackageManager.setComponentEnabledSetting来从启动器中移除它:
  ComponentName componentToDisable =
  new ComponentName("com.xxx.apptodisable",
  "com.xxx.apptodisable.LauncherActivity");

  getPackageManager().setComponentEnabledSetting(
  componentToDisable,
  PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
  PackageManager.DONT_KILL_APP);

但是当我删除了<intent-filter>标签后,出现了一个错误。启动将仅同步设备上的应用程序包! - Shivang Gupta

4
使用这段代码。
PackageManager p = getApplicationContext().getPackageManager(); 
p.setComponentEnabledSetting(getComponentName(),PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

我曾经使用这种方法,在广播接收器中当消息接收时打开应用程序,但是当我使用这段代码隐藏应用程序并启动接收器活动时,它会崩溃并显示“未找到该活动”,而在没有代码的情况下,当消息接收时它可以完美地打开。你能帮我吗? - CoronaPintu
1
这对我有用...我的应用程序在启动器中不再可见。但是我的服务仍在后台运行...这必须是被接受的答案。 - Noman

3

隐藏应用图标最好的方法是使用以下代码在您的Manifest MainActivity中添加<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>

  <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
        </intent-filter>
    </activity>

还需添加 uses-feature。

<uses-feature
    android:name="android.software.leanback"
    android:required="true" />

0

只需不使用带有android.intent.category.LAUNCHER类别的意图过滤器实现Activity,并使Service接收启动广播即可。


2
但它不会打开活动。我想安装应用程序并启动活动,但隐藏应用程序图标。 - CoronaPintu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接