以编程方式启用/禁用活动

时间:2013-07-05 17:16:38

标签: android android-activity

我的应用中有一项活动,我保留了

android:enabled="false"

现在我希望当单击一个按钮时,它应该更换为

android:enabled="true"

我该怎么做?

4 个答案:

答案 0 :(得分:24)

以下是如何启用/禁用活动的示例:

    PackageManager pm = getPackageManager(); 
    pm.setComponentEnabledSetting(new ComponentName(this, com.packagename.MyActivity.class),
                                  PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

    pm.setComponentEnabledSetting(new ComponentName(this, com.packagename.MyActivity.class),
                                  PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

答案 1 :(得分:5)

这是一个很好的方法:

  public static void setActivityEnabled(Context context,final Class<? extends Activity> activityClass,final boolean enable)
    {
    final PackageManager pm=context.getPackageManager();
    final int enableFlag=enable ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
    pm.setComponentEnabledSetting(new ComponentName(context,activityClass),enableFlag,PackageManager.DONT_KILL_APP);
    }

示例用法:

setActivityEnabled(this,SomeActivity.class,false);

答案 2 :(得分:2)

使用PackageManager and setComponentEnabledSetting()启用或停用应用内的任何组件:活动,服务等

答案 3 :(得分:0)

如果您正在使用productFlavors,您可以为每种风格分别使用AndroidManifest文件。在那些您可以轻松覆盖主Manifest文件中的属性。构建特定的flavor清单时,merger会根据所选的flavor调整Manifest。

在要禁用特定活动的flavor的清单中,您可以这样做

    <activity
        android:name="com.facebook.CustomTabActivity"
        android:enabled="false"
        tools:node="remove">
    </activity>