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

问题描述:

我想从应用程序列表和最近的应用程序列表中删除我的应用程序。所以我试图用下面的代码禁用我的主/发射器活动:在禁用启动器活动后,android重新安装失败

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

这是做的工作。但现在我尝试重新安装应用程序,并且它失败说“活动MainActivity类不存在”。如果我卸载该应用程序,则安装将再次运行。我该如何处理这个问题?非常感谢您的时间和帮助

我发现我必须在重新安装之前启用该活动。 这可以通过让广播接收器监听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>