我的应用程序有一个小部件。在 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);
}