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

png*_*png 5 android components failed-installation

我想从应用列表和最近的应用列表中删除我的应用.所以我尝试使用以下代码禁用我的main/launcher活动:

ComponentName componentToDisable = new ComponentName(context, MainActivity.class);
context.getPackageManager().setComponentEnabledSetting(componentToDisable,
           PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)

这样做了.但是现在我尝试重新安装应用程序并且无法说"活动MainActivity类不存在".如果我卸载应用程序,安装将再次运行.我该如何处理这个问题?非常感谢您的时间和帮助

png*_*png 5

我发现在重新安装之前我必须启用活动.这可以通过让广播接收器监听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);
}
Run Code Online (Sandbox Code Playgroud)

接收器的清单摘录:

<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>
Run Code Online (Sandbox Code Playgroud)