Remove use of private APIs
Change-Id: I3e28763075f8e92391796dc009214c9fa8f50008
diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java
index c8fb09e..d69dd34 100644
--- a/src/com/android/launcher2/LauncherProvider.java
+++ b/src/com/android/launcher2/LauncherProvider.java
@@ -16,13 +16,6 @@
package com.android.launcher2;
-import com.android.internal.util.XmlUtils;
-import com.android.launcher.R;
-import com.android.launcher2.LauncherSettings.Favorites;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
import android.app.SearchManager;
import android.appwidget.AppWidgetHost;
import android.appwidget.AppWidgetManager;
@@ -54,6 +47,12 @@
import android.util.Log;
import android.util.Xml;
+import com.android.launcher.R;
+import com.android.launcher2.LauncherSettings.Favorites;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
@@ -684,15 +683,18 @@
db.update(TABLE_FAVORITES, values, updateWhere, null);
if (favoriteType == Favorites.ITEM_TYPE_WIDGET_CLOCK) {
- appWidgetManager.bindAppWidgetId(appWidgetId,
+ // TODO: check return value
+ appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,
new ComponentName("com.android.alarmclock",
"com.android.alarmclock.AnalogAppWidgetProvider"));
} else if (favoriteType == Favorites.ITEM_TYPE_WIDGET_PHOTO_FRAME) {
- appWidgetManager.bindAppWidgetId(appWidgetId,
+ // TODO: check return value
+ appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,
new ComponentName("com.android.camera",
"com.android.camera.PhotoAppWidgetProvider"));
} else if (favoriteType == Favorites.ITEM_TYPE_WIDGET_SEARCH) {
- appWidgetManager.bindAppWidgetId(appWidgetId,
+ // TODO: check return value
+ appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,
getSearchWidgetProvider());
}
} catch (RuntimeException ex) {
@@ -711,6 +713,24 @@
}
}
+ private static final void beginDocument(XmlPullParser parser, String firstElementName)
+ throws XmlPullParserException, IOException {
+ int type;
+ while ((type = parser.next()) != parser.START_TAG
+ && type != parser.END_DOCUMENT) {
+ ;
+ }
+
+ if (type != parser.START_TAG) {
+ throw new XmlPullParserException("No start tag found");
+ }
+
+ if (!parser.getName().equals(firstElementName)) {
+ throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
+ ", expected " + firstElementName);
+ }
+ }
+
/**
* Loads the default set of favorite packages from an xml file.
*
@@ -729,7 +749,7 @@
try {
XmlResourceParser parser = mContext.getResources().getXml(workspaceResourceId);
AttributeSet attrs = Xml.asAttributeSet(parser);
- XmlUtils.beginDocument(parser, TAG_FAVORITES);
+ beginDocument(parser, TAG_FAVORITES);
final int depth = parser.getDepth();
@@ -989,7 +1009,8 @@
allocatedAppWidgets = true;
- appWidgetManager.bindAppWidgetId(appWidgetId, cn);
+ // TODO: need to check return value
+ appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, cn);
} catch (RuntimeException ex) {
Log.e(TAG, "Problem allocating appWidgetId", ex);
}