繁体   English   中英

从主屏幕动态删除Android Widget

[英]Dynamically deleting Android Widget from home screen

从配置活动中按回后,我需要删除主屏幕小部件实例,因为我希望它被完全删除,而不是由于问题 2539而留在“边缘”中。 所以这些修复之一会很好:

  1. 修复问题 2539 并让小部件实例从主屏幕和“limbo”中优雅地消失
  2. 让程序员通过 AppWidgetHost 执行此操作,并使用正确的 id 引用主屏幕,(使此安全漏洞证明)。 这里描述有趣的尝试)

现在有可能吗?

我自己解决了,只处理两个布尔标志。 这是我在扩展 AppWidgetProvider 的类上所做的

public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    SharedPreferences settings = context.getSharedPreferences(SHARED_PREFERENCES, 0); 

    for(int widgetId:appWidgetIds)
    {   
        boolean configured = settings.getBoolean(CONFIGURED_PREFERENCE+widgetId, false);    //In order to skip initial UpdateService
        boolean widget= settings.getBoolean(WIDGET_PREFERENCE+widgetId, false);
         if(!widget && configured) continue;   // In order to skip phantom Widgets update


    if(!configured)
    {   

     SharedPreferences.Editor editor = settings.edit();
     editor.putBoolean(CONFIGURED_PREFERENCE+widgetId, true);
           editor.commit();
        }
    else
    {    Intent updateService=new Intent(context, UpdateService.class);          
        updateService.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,widgetId);
         context.startService(updateService);
    }   


  }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM