Enable/disable an activity programmatically

前端 未结 4 1548
被撕碎了的回忆
被撕碎了的回忆 2020-12-06 01:30

I have an activity in in my app which I have kept as

android:enabled=\"false\"

now I want that when a button is clicked it should get chan

相关标签:
4条回答
  • 2020-12-06 02:07

    Here's a nice way to do it:

      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);
        }
    

    example usage:

    setActivityEnabled(this,SomeActivity.class,false);
    
    0 讨论(0)
  • 2020-12-06 02:08

    Use PackageManager and setComponentEnabledSetting() to enable or disable any component within your app: activity, service, etc.

    0 讨论(0)
  • 2020-12-06 02:08

    In case you're using productFlavors, you can have separate AndroidManifest files for each flavor. In those you can easily override properties from the main Manifest file. When building a particular flavor manifest merger merges the Manifest based on the selected flavor.

    In the flavor's manifest where you want to disable a particular activit you can do it like this

        <activity
            android:name="com.facebook.CustomTabActivity"
            android:enabled="false"
            tools:node="remove">
        </activity>
    
    0 讨论(0)
  • 2020-12-06 02:28

    Here's an example how to enable/disable an Activity:

        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);
    
    0 讨论(0)
提交回复
热议问题