以编程方式取消注册窗口小部件

时间:2012-05-02 15:15:45

标签: android android-widget

我已将2个小部件添加到我的应用中。但是,如果用户在某些Android版本上将应用程序移动到SD卡,则窗口小部件将无法使用。

作为解决方案,我创建了一个仅包含小部件的新小应用程序。因此,用户可以将主应用程序移动到SD卡并在内部存储中使用Widgets应用程序,以便能够使用小部件。除了2个主要小部件,Widgets应用程序还有2个小部件(总共4个)。这两个额外的小部件是一种beta小部件。如果我看到一个Widget被大量使用,我会改进它并将其移动到主包中。

当用户没有将主应用程序移动到SD卡(或者具有允许从SD卡使用Widgets的Android版本)并且用户安装Widgets应用程序以访问这2个额外的小部件时,会出现问题。在这种情况下,用户将获得两个主要小部件两次:一次来自主应用程序,另一次来自小部件应用程序。

如果我检测到Widgets应用程序也已安装,我想要从主应用程序中禁用这两个小部件。这是为了避免重复这两个小部件。

我知道如何从主应用程序检查是否安装了Widgets应用程序。我只是不知道如何以编程方式禁用Widget。这可能吗?

1 个答案:

答案 0 :(得分:5)

使用PackageManagersetComponentEnabledSetting()按名称禁用AppWidgetProvider(s),它们将不再显示在列表中。

如果用户已经将这些应用小部件添加到他们的主屏幕,他们将会中断,并且用户可能会感到困惑。