使用一个按钮启用或禁用启动意图过滤器活动

时间:2016-12-05 13:15:32

标签: android android-intent

我有一个包含多个活动的应用程序,它们都在清单中有一个启动意图过滤器,因此它们可以在启动器上显示几个图标,有一个主要活动,其余部分默认情况下被禁用{{1这是我的清单的一部分:

android:enabled="false"

我找到了一种使用以下代码启用或禁用其他活动的方法:

    <activity
        android:name="com.myapp.MainActivity"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.myapp.Activity_1"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/secondary_activity"
        android:enabled="false">// HERE I DISABLE THE ACTIVITY
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

这可以通过使用public static void enableComponent(Context context, Class<?> componentClass, boolean isEnable) { int enableFlag = isEnable ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED; context.getPackageManager().setComponentEnabledSetting(new ComponentName(context, componentClass), enableFlag, PackageManager.DONT_KILL_APP); } private void setupDetailsOverviewRowPresenter() { detailsPresenter.setOnActionClickedListener(new OnActionClickedListener() { @Override public void onActionClicked(Action action) { if (action.getId() == ACTION_ENABLE){ mSelectedApp = (App) getActivity().getIntent().getSerializableExtra(DetailsActivity.APP); enableComponent(mContext, com.myapp.Activity_1.class, true); } }else if (action.getId() == ACTION_DISABLED){ mSelectedApp = (App) getActivity().getIntent().getSerializableExtra(DetailsActivity.APP); enableComponent(mContext, com.myapp.Activity_1.class, false); } } }); } ACTION_ENABLE按钮启用或禁用活动来完美运行,但这对可用性不利,相反,我只想使用一个按钮来启用或禁用该活动。

我需要知道的是如何获取活动的状态,因此如果活动为ACTION_DISABLE,则显示带有android:enabled="false"的按钮,如果活动为ACTION_EANBLE则显示按钮与android:enabled="true"

0 个答案:

没有答案