如何取消创建安卓主屏幕小部件



我的应用程序有一个小部件。在 android 触发时创建小部件onEnabled 我正在检查用户是否满足某个要求,然后用户可以继续创建一个小部件。但是,如果小部件不符合特定要求,我需要停止创建小部件。我不知道如何动态取消小部件的创建。这是我尝试的,但没有奏效。

RemoteViews views;
void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                     int appWidgetId) {

    // Construct the RemoteViews object
    views = new RemoteViews(context.getPackageName(), R.layout.lock_widget);
    views.setOnClickPendingIntent(R.id.lock_widget, getPendingSelfIntent(context, LOCK));
    // Instruct the widget manager to update the widget
    appWidgetManager.updateAppWidget(appWidgetId, views);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    // There may be multiple widgets active, so update all of them
    for (int appWidgetId : appWidgetIds) {
        updateAppWidget(context, appWidgetManager, appWidgetId);
    }
}
@Override
public void onEnabled(Context context) {
    // Enter relevant functionality for when the first widget is created
    // Query User pro status when creating widget
    Log.d("Widget", "OnEnabled Fired");
    views.removeAllViews(views.getLayoutId());
    //views.
}

views.removeAllViews(views.getLayoutId());似乎不起作用。

有没有办法做到这一点。我正在使用的解决方法是检查onUpdate中的某些要求检查。

在您

的情况下,最好的解决方案是启用小部件组件,如果用户有所有"特定要求"。

所以我假设以下情况。用户使用您的应用程序,在某些情况下(您启用小部件组件,如果用户失去他的"特定要求",只需禁用小部件组件,因此小部件选择器中没有小部件)。您可以通过PackageManager轻松实现此目的。

更新:当用户具有专业状态时,只需启用小部件,如果没有 - 只需禁用

public static void setComponentState(Context context, boolean enabled) {
    int flag = (enabled ?
            PackageManager.COMPONENT_ENABLED_STATE_ENABLED :
            PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
    ComponentName component = new ComponentName(context, YourAppWidgetProvider.class); // or make component via package name and class name (check Component constructors)
    PackageManager pm = context.getApplicationContext().getPackageManager();
    pm.setComponentEnabledSetting(component, flag, PackageManager.DONT_KILL_APP);
}

最新更新