禁用启动器活动后,android重新安装失败

Posted

技术标签:

【中文标题】禁用启动器活动后,android重新安装失败【英文标题】:android reinstall fails after making the launcher activity disabled 【发布时间】:2012-05-10 22:02:08 【问题描述】:

我想从应用列表和最近的应用列表中删除我的应用。所以我尝试使用以下代码禁用我的主/启动器活动:

ComponentName componentToDisable = new ComponentName(context, MainActivity.class);
context.getPackageManager().setComponentEnabledSetting(componentToDisable,
           PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

这可以完成工作。但是现在我尝试重新安装该应用程序,但它无法显示“活动 MainActivity 类不存在”。如果我卸载该应用程序,安装将再次运行。我该如何处理这个问题?非常感谢您的时间和帮助

【问题讨论】:

【参考方案1】:

我发现我必须在重新安装之前启用该活动。 这可以通过让广播接收器监听 package_add / remove 事件并在 onReceive 中再次启用活动来完成。

public void onReceive(Context context, Intent intent) 
    Log.i("Receiver","got event");
    ComponentName componentToDisable = new ComponentName(context,BlockableComponentActivity.class);
    context.getPackageManager().setComponentEnabledSetting(componentToDisable,
            PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

接收方的清单摘录:

<receiver android:name="PackageChangeReceiver">
<intent-filter>
    <action android:name="android.intent.action.PACKAGE_ADDED"/>
    <action android:name="android.intent.action.PACKAGE_REPLACED"/>
    <action android:name="android.intent.action.PACKAGE_REMOVED"/>
    <data android:scheme="package"/>
</intent-filter>

【讨论】:

以上是关于禁用启动器活动后,android重新安装失败的主要内容,如果未能解决你的问题,请参考以下文章

安装 Android SDK Build-Tools 26 后无法启动活动 ComponentInfo...

Win10禁用驱动签名的命令

安装应用程序后在 android studio 中启动活动时出错

无法打开内核设备“.VMCIDevVMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。

无法打开内核设备“.VMCIDevVMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。

安装 ttf mscorefonts安装程序后的软件安装"下载额外数据文件失败"