如何在android中可见/不可见启动器图标?

Posted

技术标签:

【中文标题】如何在android中可见/不可见启动器图标?【英文标题】:How to visible/invisible launcher icon in android? 【发布时间】:2013-12-02 13:29:00 【问题描述】:

我正在创建一个应用程序,我需要在其中隐藏图标启动器并根据要求显示图标启动器。我使用下面的代码来隐藏启动器图标。

<category android:name="android.intent.category.LAUNCHER" /> // Remove this line from manifest.xml

PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

通过使用这些 sn-p 代码,我只能隐藏应用程序图标。

为了显示我使用了这些代码 sn-p

PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(),
PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);

PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

但是它们都没有影响,或者我无法以编程方式检索启动器图标。请建议我如何完成这项任务。

提前致谢

【问题讨论】:

我看不出最后两个代码 sn-ps 之间的区别。 @gunar : 最后一行代码,你可以看到区别:) @gunar: PackageManager.COMPONENT_ENABLED_STATE_DEFAULT 和 PackageManager.COMPONENT_ENABLED_STATE_ENABLED 现在我看到了……我需要换眼镜了 :) 【参考方案1】:

试试这个:

1 .修改 AndroidManifest.xml 中的 MainActivity 部分,从中删除,与 Intent-filter 部分中的 MAIN 类别一致

<category android:name="android.intent.category.LAUNCHER" />//DELETE THIS LINE

为您的应用、每个图标创建&lt;activity-alias&gt;。像这样

<activity-alias android:label="@string/app_name" 
    android:icon="@drawable/icon" 
    android:name=".MainActivity"
    android:enabled="false"
    android:targetActivity=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>   
</activity-alias>

以编程方式设置启用或禁用

【讨论】:

谢谢你,但我想在隐藏后显示图标启动器。通过使用您的代码,我只能隐藏启动器图标。 您的回答是告诉如何隐藏图标,但他也提到他已经完成了“如何隐藏图标”。他问,如何找回隐藏图标? 你好,Harshit,我已经检查了你的代码,它工作正常,但是当我用 android:enabled="false" 调用给定的 sn-p 时,它显示一个错误,与 android:enabled="true" 完美配合 新包尚未在系统中注册。在下次尝试前等待 3 秒。在设备 a691bb9 ActivityManager 上启动活动 com.vj.MainActivity:正在启动:Intent act=android.intent.action.MAIN cat=[ xxx ] cmp=xxxx ActivityManager:错误类型 3 ActivityManager:错误:活动类 com.vj/ com.vj.MainActivity 不存在。 这行得通,但是,我有一个需要运行的自动启动应用程序,当我这样做时,它不会运行以启用接收器,关于如何执行此操作的任何线索?

以上是关于如何在android中可见/不可见启动器图标?的主要内容,如果未能解决你的问题,请参考以下文章

在 Android Tv 中,如何实现图标始终可见的标题(导航抽屉)

Android标签文本不可见

如何检测软件键盘在 Android 电视(消防电视)上是不是可见?

Android:manifest targetSdkVersion 更改导致:图标不可见,小部件不再工作,并且无法访问数据

android 2018 面试题

ContentControl 在应用程序通过 UI 自动化测试启动时不可见,但在用户启动应用程序时可见