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

cre*_*ver 13 android android-activity

我在我的应用程序中有一个活动,我保留了

android:enabled="false"
Run Code Online (Sandbox Code Playgroud)

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

android:enabled="true"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Ema*_*lin 26

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

    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);
Run Code Online (Sandbox Code Playgroud)

  • 这在构造函数中是一个上下文,所以你必须用"myactivity.this"替换它,其中myactivity是你的按钮所属的活动 (2认同)

and*_*per 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);
    }
Run Code Online (Sandbox Code Playgroud)

用法示例:

setActivityEnabled(this,SomeActivity.class,false);
Run Code Online (Sandbox Code Playgroud)