隐藏和显示应用程序图标

5
我希望用户能够隐藏和显示应用启动器图标。 我在https://www.nexsoftsys.com/articles/how-to-hide-application-launcher-lcon-in-android.html发现了一个解决方案。 我还在Hide application icon中找到了同样的解决方案。但是,在后面的链接中,它说这段代码出现在上述两个链接中:
PackageManager pm = getApplicationContext().getPackageManager(); 
pm.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

"将禁用此组件后,操作系统将无法在Google Play中找到此应用程序包,因此将使该应用程序无法从Google Play进行升级并且不会重新安装,除非手动卸载该应用程序(这不是用户友好的行为)"

我试图确定这是否属实,但没有成功。请有人能回答这个问题吗?非常感谢。


1
你想让用户从主屏幕上隐藏图标吗?还是从主屏幕、应用抽屉和其他可能找到它的地方都要隐藏?如果是后者而不是前者,那么一旦隐藏了应用程序,你希望用户如何能够访问/启动你的应用程序呢?一些秘密相册/浏览器使用计算器图标来隐藏他们的应用程序,然后用户必须进入计算器,然后输入一系列秘密数字和命令来启动底层应用程序。你可以考虑为你的应用程序做类似的事情。 - Stephan Branczyk
谢谢回复。如果您看到上面的第二个链接,我将允许用户通过拨号器启动应用程序。我希望该应用程序对所有上述内容都是隐藏的。 - user396707
3个回答

0

您可以使用以下代码隐藏应用程序图标:

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); 
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);

抱歉,但这并没有回答问题,而且其中一部分已经在我的问题中显示了。 - user396707

0

你要求我们证明一个否定的事情。

除非这个否定在安卓文档中明确说明,或者在Google Play的出版商/开发者服务条款中明确禁止(似乎并没有,但我不是律师),否则很难证明某个特定的安卓功能不存在。

我所知道的唯一适用于所有安卓手机的解决方案是创建自己的启动器。通过用户安装和设置为主要启动器的自定义启动器,您可以隐藏任何想要隐藏的应用程序,甚至是它本身。

除了这个解决方案之外,其他部分解决方案可能包括:

  1. 仅限三星和索尼手机,您可以使用三星Knox API和索尼专有API。如果您的应用程序是商业性质的,则需要支付费用。

  2. 在三星手机上,还可以为用户提供手动隐藏应用程序图标的说明。

  3. 如果您的应用程序实际上是基于电话的,就像它听起来的那样,您可以考虑使用Twilio或Voxeo等服务将其功能移至云端。这样,用户只需要将电话号码添加到收藏夹/快速拨号中,而无需安装任何内容,您可以随时更新基于云的应用程序,而无需更新手机。也许,您甚至可以通过运营商specific API的功能增强基于云的应用程序的功能。


0

由于我们无法知道Google Play(专有软件)如何升级特定应用程序,因此我们无法给出任何逻辑推理。这取决于Google Play升级应用程序/添加新补丁的方式。唯一确认的方法是询问曾经完成此操作的人。此链接提出了同样的问题,并且有一位开发者确认它有效,答案被接受。

我猜测:目前,您必须禁用启动器组件以隐藏应用程序。这并不意味着其他组件被禁用。其他组件仍然处于活动状态。这就是为什么活动组件仍应该可升级的原因。为了保险起见,您将来的升级应该在活动组件中进行。 您还可以为应用程序使用别名启动器组件。类似于这个


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