【问题标题】:android reinstall fails after making the launcher activity disabled禁用启动器活动后,android重新安装失败
【发布时间】: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 类不存在”。如果我卸载该应用程序,安装将再次运行。我该如何处理这个问题?非常感谢您的时间和帮助

【问题讨论】:

    标签: android components failed-installation


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 2012-07-16
      相关资源
      最近更新 更多