在实现别名Activity后,无法在列表中找到我的应用程序

时间:2013-10-03 15:39:48

标签: android android-activity android-manifest

我希望我的应用程序有时表现为家庭启动器,有时候不会。为了做到这一点,我实现了一个“别名活动”,它将作为“家庭启动器活动”(见下面的清单)。

在启用和禁用之间切换后,有时我无法在应用程序列表中看到应用程序(我在intent-filter中声明了Launcher)。但是,重新启动设备后,我能够在列表中看到该应用程序...非常奇怪......

我正在通过以下代码在两个活动之间切换:

启用活动:

ComponentName enableHomeActivityManifest = new ComponentName(HOME_PACKAGE,HOME_PACKAGE
            + ".activities.HomeActivity");

    mContext.getPackageManager().setComponentEnabledSetting(enableHomeActivityManifest, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
            PackageManager.DONT_KILL_APP);

禁用别名:

    ComponentName componentToDisable = new ComponentName(this, MessageDispatcher.HOME_PACKAGE + ".aliasHomeActivity");
    getPackageManager().setComponentEnabledSetting(componentToDisable,
            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
            PackageManager.DONT_KILL_APP
        );

清单:

  <activity
        android:name=".activities.HomeActivity"
        android:clearTaskOnLaunch="true"
        android:configChanges="orientation"
        android:icon="@drawable/home"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:exported="true"
        android:screenOrientation="portrait"
        android:stateNotNeeded="true"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <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>

    <activity-alias
        android:name=".aliasHomeActivity"
        android:clearTaskOnLaunch="true"
        android:configChanges="orientation"
        android:enabled="false"
        android:icon="@drawable/home"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        android:stateNotNeeded="true"
        android:exported="true"
        android:targetActivity=".activities.HomeActivity"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

1 个答案:

答案 0 :(得分:0)

主屏幕启动器不需要根据组件状态的变化自动重新加载其图标。虽然这是理想的,但毫无疑问许多主屏幕实现都不会这样做。