1c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project/*
2c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
3c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project *
4c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * you may not use this file except in compliance with the License.
6c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * You may obtain a copy of the License at
7c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project *
8c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project *
10c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * See the License for the specific language governing permissions and
14c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * limitations under the License.
15c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project */
16c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
17c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Projectpackage android.appwidget;
18c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
19c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Projectimport android.content.BroadcastReceiver;
20c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Projectimport android.content.Context;
21c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Projectimport android.content.Intent;
22c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Projectimport android.os.Bundle;
23c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
24c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project/**
2560b88edea7132ddce90f2dced07c6706f1502270Ken Shirriff * A convenience class to aid in implementing an AppWidget provider.
26c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * Everything you can do with AppWidgetProvider, you can do with a regular {@link BroadcastReceiver}.
27c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * AppWidgetProvider merely parses the relevant fields out of the Intent that is received in
28c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * {@link #onReceive(Context,Intent) onReceive(Context,Intent)}, and calls hook methods
29c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * with the received extras.
30c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project *
31c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * <p>Extend this class and override one or more of the {@link #onUpdate}, {@link #onDeleted},
32c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project * {@link #onEnabled} or {@link #onDisabled} methods to implement your own AppWidget functionality.
338a4c53a7c7911b8f4c73a8fcfbbad3ac903b3367Scott Main * </p>
343aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez *
353aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <div class="special reference">
363aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <h3>Developer Guides</h3>
373aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <p>For more information about how to write an app widget provider, read the
383aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <a href="{@docRoot}guide/topics/appwidgets/index.html#AppWidgetProvider">App Widgets</a>
393aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * developer guide.</p>
403aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * </div>
41c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project */
42c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Projectpublic class AppWidgetProvider extends BroadcastReceiver {
43c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    /**
44c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * Constructor to initialize AppWidgetProvider.
45c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     */
46c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    public AppWidgetProvider() {
47c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    }
48c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
49c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    /**
50c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * Implements {@link BroadcastReceiver#onReceive} to dispatch calls to the various
51c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * other methods on AppWidgetProvider.
52c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
53c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param context The Context in which the receiver is running.
54c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param intent The Intent being received.
55c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     */
56c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    // BEGIN_INCLUDE(onReceive)
57c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    public void onReceive(Context context, Intent intent) {
58c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project        // Protect against rogue update broadcasts (not really a security issue,
59c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project        // just filter bad broacasts out so subclasses are less likely to crash).
60c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project        String action = intent.getAction();
61c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project        if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {
62c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project            Bundle extras = intent.getExtras();
63c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project            if (extras != null) {
64c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project                int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
65c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project                if (appWidgetIds != null && appWidgetIds.length > 0) {
66c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project                    this.onUpdate(context, AppWidgetManager.getInstance(context), appWidgetIds);
67c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project                }
68c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project            }
69adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate        } else if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
70c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project            Bundle extras = intent.getExtras();
71eda4be30a2a3a63093faf052be5d804bf633e6f5Jeff Sharkey            if (extras != null && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_ID)) {
72eda4be30a2a3a63093faf052be5d804bf633e6f5Jeff Sharkey                final int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
73eda4be30a2a3a63093faf052be5d804bf633e6f5Jeff Sharkey                this.onDeleted(context, new int[] { appWidgetId });
74c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project            }
75adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate        } else if (AppWidgetManager.ACTION_APPWIDGET_OPTIONS_CHANGED.equals(action)) {
76e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen            Bundle extras = intent.getExtras();
77e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen            if (extras != null && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_ID)
78d2097ebacf3a3658624cad10669a4d98e8d7d846Adam Cohen                    && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS)) {
79e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen                int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
80d2097ebacf3a3658624cad10669a4d98e8d7d846Adam Cohen                Bundle widgetExtras = extras.getBundle(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS);
81d2097ebacf3a3658624cad10669a4d98e8d7d846Adam Cohen                this.onAppWidgetOptionsChanged(context, AppWidgetManager.getInstance(context),
82e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen                        appWidgetId, widgetExtras);
83e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen            }
84adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate        } else if (AppWidgetManager.ACTION_APPWIDGET_ENABLED.equals(action)) {
85c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project            this.onEnabled(context);
86adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate        } else if (AppWidgetManager.ACTION_APPWIDGET_DISABLED.equals(action)) {
87c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project            this.onDisabled(context);
88adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate        } else if (AppWidgetManager.ACTION_APPWIDGET_RESTORED.equals(action)) {
89adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate            Bundle extras = intent.getExtras();
90adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate            if (extras != null) {
91adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate                int[] oldIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_OLD_IDS);
92adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate                int[] newIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
93adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate                if (oldIds != null && oldIds.length > 0) {
94adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate                    this.onRestored(context, oldIds, newIds);
95adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate                    this.onUpdate(context, AppWidgetManager.getInstance(context), newIds);
96adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate                }
97adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate            }
98c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project        }
99c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    }
100c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    // END_INCLUDE(onReceive)
101e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen
102c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    /**
103adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_UPDATE} and
104adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * {@link AppWidgetManager#ACTION_APPWIDGET_RESTORED} broadcasts when this AppWidget
105adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * provider is being asked to provide {@link android.widget.RemoteViews RemoteViews}
106c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * for a set of AppWidgets.  Override this method to implement your own AppWidget functionality.
107c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
108c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * {@more}
109c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
110c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param context   The {@link android.content.Context Context} in which this receiver is
111c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *                  running.
112c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param appWidgetManager A {@link AppWidgetManager} object you can call {@link
113c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *                  AppWidgetManager#updateAppWidget} on.
114c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param appWidgetIds The appWidgetIds for which an update is needed.  Note that this
115c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *                  may be all of the AppWidget instances for this provider, or just
116c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *                  a subset of them.
117c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
118c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @see AppWidgetManager#ACTION_APPWIDGET_UPDATE
119c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     */
120c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
121c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    }
122e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen
123e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen    /**
124d2097ebacf3a3658624cad10669a4d98e8d7d846Adam Cohen     * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED}
125e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     * broadcast when this widget has been layed out at a new size.
126e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     *
127e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     * {@more}
128e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     *
129e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     * @param context   The {@link android.content.Context Context} in which this receiver is
130e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     *                  running.
131e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     * @param appWidgetManager A {@link AppWidgetManager} object you can call {@link
132e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     *                  AppWidgetManager#updateAppWidget} on.
133adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * @param appWidgetId The appWidgetId of the widget whose size changed.
134adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * @param newOptions The appWidgetId of the widget whose size changed.
135e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     *
136d2097ebacf3a3658624cad10669a4d98e8d7d846Adam Cohen     * @see AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED
137e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen     */
138d2097ebacf3a3658624cad10669a4d98e8d7d846Adam Cohen    public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager,
139d2097ebacf3a3658624cad10669a4d98e8d7d846Adam Cohen            int appWidgetId, Bundle newOptions) {
140e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen    }
141e8724c82ab1479f13c85a2c6219841e1fd95f2d2Adam Cohen
142c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    /**
143c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_DELETED} broadcast when
144c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * one or more AppWidget instances have been deleted.  Override this method to implement
145c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * your own AppWidget functionality.
146c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
147c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * {@more}
148c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
149c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param context   The {@link android.content.Context Context} in which this receiver is
150c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *                  running.
151c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param appWidgetIds The appWidgetIds that have been deleted from their host.
152c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
153c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @see AppWidgetManager#ACTION_APPWIDGET_DELETED
154c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     */
155c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    public void onDeleted(Context context, int[] appWidgetIds) {
156c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    }
157c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
158c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    /**
159c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_ENABLED} broadcast when
160c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * the a AppWidget for this provider is instantiated.  Override this method to implement your
161c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * own AppWidget functionality.
162c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
163c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * {@more}
164c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * When the last AppWidget for this provider is deleted,
165c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * {@link AppWidgetManager#ACTION_APPWIDGET_DISABLED} is sent by the AppWidget manager, and
166c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * {@link #onDisabled} is called.  If after that, an AppWidget for this provider is created
167c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * again, onEnabled() will be called again.
168c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
169c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param context   The {@link android.content.Context Context} in which this receiver is
170c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *                  running.
171c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
172c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @see AppWidgetManager#ACTION_APPWIDGET_ENABLED
173c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     */
174c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    public void onEnabled(Context context) {
175c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    }
176c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project
177c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    /**
178c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_DISABLED} broadcast, which
179c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * is sent when the last AppWidget instance for this provider is deleted.  Override this method
180c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * to implement your own AppWidget functionality.
181c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
182c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * {@more}
183c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
184c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @param context   The {@link android.content.Context Context} in which this receiver is
185c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *                  running.
186c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     *
187c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     * @see AppWidgetManager#ACTION_APPWIDGET_DISABLED
188c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project     */
189c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    public void onDisabled(Context context) {
190c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project    }
191adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate
192adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate    /**
193adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_RESTORED} broadcast
194adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * when instances of this AppWidget provider have been restored from backup.  If your
195adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * provider maintains any persistent data about its widget instances, override this method
196adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * to remap the old AppWidgetIds to the new values and update any other app state that may
197adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * be relevant.
198adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     *
199adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * <p>This callback will be followed immediately by a call to {@link #onUpdate} so your
200adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * provider can immediately generate new RemoteViews suitable for its newly-restored set
201adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * of instances.
202adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     *
203adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * {@more}
204adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     *
205adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * @param context
206adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * @param oldWidgetIds
207adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     * @param newWidgetIds
208adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate     */
209adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate    public void onRestored(Context context, int[] oldWidgetIds, int[] newWidgetIds) {
210adfe8b86e9178a553b6db9722340fa4ff5201cf1Christopher Tate    }
211c39a6e0c51e182338deb8b63d07933b585134929The Android Open Source Project}
212