14

我的应用程序中有一个活动,我一直保留为

android:enabled="false"

现在我希望当一个按钮被点击时它应该得到改变

android:enabled="true"

我怎样才能做到这一点?

4

4 回答 4

28

这是一个如何启用/禁用 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);
于 2013-07-05T17:29:04.423 回答
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);
于 2014-04-27T22:39:15.017 回答
3

使用PackageManagersetComponentEnabledSetting()启用或禁用应用程序中的任何组件:活动、服务等。

于 2013-07-05T17:26:04.090 回答
0

如果您使用的是 productFlavors,则可以为每种口味拥有单独的 AndroidManifest 文件。在这些中,您可以轻松地覆盖主清单文件中的属性。在构建特定风味清单时,合并会根据所选风味合并清单。

在您想要禁用特定活动的风味清单中,您可以这样做

    <activity
        android:name="com.facebook.CustomTabActivity"
        android:enabled="false"
        tools:node="remove">
    </activity>
于 2018-03-16T10:19:10.777 回答