我的应用中有一项活动,我保留了
android:enabled="false"
现在我希望当单击一个按钮时,它应该更换为
android:enabled="true"
我该怎么做?
答案 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>