2011-11-29 160 views
2

我從配置活動中按下後需要刪除主屏幕Widget實例,因爲我希望將其完全刪除,並且不會因此而留在「邊框」中issue 2539。因此,這將是所有這些修復好的一個:從主屏幕動態刪除Android Widget

  1. 修復問題2539,並讓控件實例優雅無論是從主屏幕,並從「地獄」
  2. 讓程序員做到這一點線槽AppWidgetHost用正確的ID指的消失不見主屏幕,(使這個安全漏洞證明)。 (有趣的嘗試描述here

現在是任何這些可能嗎?

回答

1

我自己解決,只處理兩個布爾標誌。 這裏是我做了延長的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); 
    } 


    } 

} 

對於一個完整的交代類我寫的整個過程on my blog