隐藏和显示应用程序图标

Hide and Display Application Icon

我希望用户能够隐藏和显示应用程序启动器图标。 我在 https://www.nexsoftsys.com/articles/how-to-hide-application-launcher-lcon-in-android.html 找到了解决方案 我也在以下位置找到了相同的解决方案 Hide application icon

然而,在后者link中,它表示出现在以上两个中的这段代码

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

"will make the app NOT upgradeable from google play as the OS will not find the package after this component disabling and will not able to re-install it, unless the app is not manullay uninstalled (which is not a user friendly behaviour)"

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

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

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);

您要求我们证明是否定的。

除非 android 文档中明确说明了这种否定,或者除非 Google Play for publishers/developers 的服务条款中明确禁止这种否定(它似乎没有是,但我不是律师),实际上很难证明特定的 Android 特征不存在。

据我所知,适用于所有 Android phone 的唯一解决方案是创建您自己的自定义 launcher. With a custom 启动器,用户可以安装并制作自己的启动器主启动器,您可以隐藏任何您想要的应用程序,甚至是它本身。

除了那个解决方案之外,其他部分解决方案是:

  1. 仅在三星和索尼 phone 上,您可以使用三星 Knox API 和索尼专有 API。如果您的应用程序是商业性质的,则需要为此付费。

  2. 在 Samsung phones 上,也可以为用户提供手动隐藏应用程序图标的说明。

  3. 如果您的应用实际上是基于电话的(听起来确实如此),您可以考虑使用 Twilio 或 Voxeo 等服务将其功能转移到云端。这样,用户只需在他的 favorites/speed 拨号盘上添加一个 phone 号码,无需安装任何东西,您可以根据需要随时更新您的基于云的应用程序,而无需更新phone。也许,您甚至可以通过运营商 specific APIs.

  4. 的功能来增强基于云的应用程序的功能

由于我们不知道 Google Play(专有)如何升级特定应用程序,因此我们无法对此给出任何逻辑推理。这取决于 Google Play 如何升级应用程序/添加新补丁。确认这一点的唯一方法是询问以前做过的人。这个 question 提出了同样的问题,一位开发人员确认它可以工作。答案被接受了。

我对此的猜测是:目前,您必须禁用用于隐藏应用程序的启动器组件。这并不意味着其他组件被禁用。其他组件仍处于活动状态。这就是为什么活动组件仍然可以升级的原因。为了安全起见,您未来的升级应该在有源组件中完成。 您也可以为您的应用程序使用别名启动器组件。类似于 this.