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 changer to
android:enabled="true"
How can I do this?
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 changer to
android:enabled="true"
How can I do this?
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);
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);
Use PackageManager
and setComponentEnabledSetting()
to enable or disable any component within your app: activity, service, etc.
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>