如何使用隐藏图标更新安卓应用程序



我使用此代码隐藏图标:

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, MainActivity.class); 
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

它工作正常,但是当我尝试更新我的应用程序时,出现此错误:

Error while executing: am start -n "../..main.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=../.main.MainActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } }
Error type 3
Error: Activity class {../..main.MainActivity} does not exist.
Error while Launching activity

如何隐藏图标和仍然可用的应用程序更新(无需以手动方式卸载/安装(?

我认为这是一个设计问题。您需要防止在禁用时启动主活动。如果您由于某种原因被迫在更新后启动您的主活动,只需先启用您的主活动。您可以在清单中将 MainActivity 启用状态设置为 false,并在需要时启用它,例如在应用程序类的 onCreate 方法中、在服务中或在广播接收器中。在清单中禁用 MainActivity 可能会阻止它默认启动,并且可能是您需要的。这完全取决于您需要如何以及何时禁用和再次启用 MainActivity。对于最后的评论,因为您可能知道应用程序不需要活动 - 无论是否具有操作主要 - 即可开始。

只需从Activity中删除android.intent.category.LAUNCHER,就不会有启动器图标 - 虽然它仍然可以启动,但由于android.intent.action.MAIN.如果您确实需要一个可以隐藏和显示的启动器图标,只需添加一个代理Activity,除了提供启动器然后启动实际Activity之外,它没有其他目的......这样,无论该代理Activity是否已禁用,无论是否禁用,仍然可以直接启动它。

相关内容