0

我需要做活動選擇控件當小部件被丟棄的選擇控件

Widget1.java

public class Widget1 extends AppWidgetProvider{ 

Context context; 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
     int[] appWidgetIds) { 
    super.onUpdate(context, appWidgetManager, appWidgetIds); 
    if (appWidgetIds != null) { 
     int N = appWidgetIds.length; 

     for (int mAppWidgetId : appWidgetIds) { 

      Intent intent = new Intent(context, UpdateWidgetService.class); 

      intent.putExtra(EXTRA_APPWIDGET_ID, mAppWidgetId); 
      intent.setAction("FROM WIDGET PROVIDER"); 
      context.startService(intent); 
     } 

    } 

} 

public static class UpdateWidgetService extends IntentService { 
    public UpdateWidgetService() { 
     // only for debug purpose 
     super("UpdateWidgetService"); 

    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     AppWidgetManager appWidgetManager = AppWidgetManager 
       .getInstance(UpdateWidgetService.this); 

     int incomingAppWidgetId = intent.getIntExtra(EXTRA_APPWIDGET_ID, 
       INVALID_APPWIDGET_ID); 

     if (incomingAppWidgetId != INVALID_APPWIDGET_ID) { 
      try { 
       updateNewsAppWidget(appWidgetManager, incomingAppWidgetId, 
         intent); 
      } catch (NullPointerException e) { 
      } 

     } 

    } 

    public void updateNewsAppWidget(AppWidgetManager appWidgetManager, 
      int appWidgetId, Intent intent) { 
     Log.v("String package name", this.getPackageName()); 
     RemoteViews views = new RemoteViews(this.getPackageName(), 
       R.layout.widget1); 

     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 
} 

Widget2.java

public class widget2 extends AppWidgetProvider{ 
Context context; 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
     int[] appWidgetIds) { 
    super.onUpdate(context, appWidgetManager, appWidgetIds); 
    if (appWidgetIds != null) { 
     int N = appWidgetIds.length; 

     for (int mAppWidgetId : appWidgetIds) { 

      Intent intent = new Intent(context, UpdateWidgetService.class); 

      intent.putExtra(EXTRA_APPWIDGET_ID, mAppWidgetId); 
      intent.setAction("FROM WIDGET PROVIDER"); 
      context.startService(intent); 
     } 

    } 

} 

public static class UpdateWidgetService extends IntentService { 
    public UpdateWidgetService() { 
     // only for debug purpose 
     super("UpdateWidgetService"); 

    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     AppWidgetManager appWidgetManager = AppWidgetManager 
       .getInstance(UpdateWidgetService.this); 

     int incomingAppWidgetId = intent.getIntExtra(EXTRA_APPWIDGET_ID, 
       INVALID_APPWIDGET_ID); 

     if (incomingAppWidgetId != INVALID_APPWIDGET_ID) { 
      try { 
       updateNewsAppWidget(appWidgetManager, incomingAppWidgetId, 
         intent); 
      } catch (NullPointerException e) { 
      } 

     } 

    } 

    public void updateNewsAppWidget(AppWidgetManager appWidgetManager, 
      int appWidgetId, Intent intent) { 
     Log.v("String package name", this.getPackageName()); 
     RemoteViews views = new RemoteViews(this.getPackageName(), 
       R.layout.widget2); 

     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 
    } 

啓動活動widget1.xml

<AnalogClock 
    android:id="@+id/analogClock1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:dial="@drawable/hand_dial" 
    android:hand_minute="@drawable/hand_minute" 
    android:hand_hour="@drawable/hand_hour"/> 

widget2.xml

<AnalogClock 
    android:id="@+id/analogClock2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:dial="@drawable/hand_dial2" 
    android:hand_minute="@drawable/hand_minute2" 
    android:hand_hour="@drawable/hand_hour2"/> 

widget1_config.xml

<appwidget-provider 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:minWidth="140dip" 
android:minHeight="140dip" 
android:previewImage="@drawable/preview" 
android:initialLayout="@layout/widget1" 
android:updatePeriodMillis="1800000" 
android:resizeMode="horizontal|vertical"/> 

的AndroidManifest.xml

 <receiver android:name=".Widget1" android:label="Analog Clock"> 
     <intent-filter> 
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
     </intent-filter> 
     <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_config" /> 

    </receiver> 
     <receiver android:name=".widget2" android:label="Analog Clock2"> 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" 
     android:resource="@xml/widget2_config" /> 

我可以打造十個部件在一個應用程序的每個窗口小部件單,但是,這不是好

因此,當一個部件被丟棄的選擇控件

我怎樣才能做到這一點,我需要啓動的活動?

最後,我很抱歉我的英文不好

謝謝。

回答

2

您需要將android:configure屬性添加到窗口小部件提供程序XML中。見https://github.com/slightfoot/android-note-widget/blob/master/res/xml/appwidget_note.xml

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:configure="com.demondevelopers.notewidget.ConfigActivity" 
    android:initialKeyguardLayout="@layout/appwidget_note" 
    android:initialLayout="@layout/appwidget_note" 
    android:minHeight="110dp" 
    android:minWidth="180dp" 
    android:minResizeWidth="40dp" 
    android:minResizeHeight="40dp" 
    android:resizeMode="horizontal|vertical" 
    android:widgetCategory="home_screen" 
    android:updatePeriodMillis="0" 
    /> 

對於完整的例子看看我的項目: https://github.com/slightfoot/android-note-widget

+0

爲什麼這個答案是不能接受的。奇怪的 – Harsh 2015-11-05 06:42:20

+0

投票吧。夠了,它會被社區接受。 – Simon 2015-11-05 09:18:20