我的应用程序中有一个活动,我将其保留为
android:enabled="false"
现在我希望当一个按钮被点击时,它应该被更改为
android:enabled="true"
我该如何做到这一点?
我的应用程序中有一个活动,我将其保留为
android:enabled="false"
现在我希望当一个按钮被点击时,它应该被更改为
android:enabled="true"
我该如何做到这一点?
以下是一个示例,说明如何启用/禁用 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);
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);
使用PackageManager
和setComponentEnabledSetting()
来启用或禁用应用内的任何组件,如活动、服务等。
如果您正在使用productFlavors,您可以为每个flavor拥有单独的AndroidManifest文件。在这些文件中,您可以轻松地覆盖主Manifest文件中的属性。构建特定flavor时,manifest合并器会根据所选的flavor合并Manifest。
在flavor的清单中,如果您想要禁用特定的活动,则可以像这样进行操作
<activity
android:name="com.facebook.CustomTabActivity"
android:enabled="false"
tools:node="remove">
</activity>