Android 应用程序在 Intent 启动时被杀死

Android App Getting Killed on Intent Launch

我有一个对启动器隐藏的应用程序。现在我想从拨号器打开应用程序。所以我有一个 BroadcastReceiver 来处理事情。

1) 首先我展示了应用程序,

ComponentName componentName = new ComponentName(context,
                SplashActivity.class);
        context.getPackageManager().setComponentEnabledSetting(
                componentName,
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);

2) 然后启动一个Intent,

Intent launcher = new Intent(context, SplashActivity.class);
                    launcher.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    context.startActivity(launcher);

3)那我又把应用隐藏了,

ComponentName componentName2 = new ComponentName(context,
                SplashActivity.class);
        context.getPackageManager().setComponentEnabledSetting(
                componentName2,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);

问题

Intent 启动成功,但应用程序在几秒钟后被终止。但是,如果我启动 SplashActivity 以外的任何其他 activity,则不会出现此问题。问题是什么,如何解决?

您可以在启动器 activity 的 Android 清单中使用 <activity-alias> 标签。更改启动器 activity 的清单,如下所示:-

        <activity-alias
            android:name="com.watever.SplashActivityAlias"
            android:targetActivity="com.watever.SplashActivity"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.MONKEY" />
            </intent-filter>
        </activity-alias>

在显示和隐藏应用程序的代码中,只需使用清单中使用的别名,如上面的清单别名是 SplashActivityAlias,因此在显示和隐藏应用程序的两种情况下都使用 SplashActivityAlias 而不是 SplashActivity。 通过做上面的事情,你可以隐藏你的应用程序图标 使用别名的 setComponent EnabledSetting 方法,您可以使用 dialer

启动主程序 activity,它是 splash activity

For hiding app

ComponentName componentName2 = new ComponentName("com.packagename",
                "com.packagename.HideAppActivity");
        context.getPackageManager().setComponentEnabledSetting(
                componentName2,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);