diff --git a/MyTracks/AndroidManifest.xml b/MyTracks/AndroidManifest.xml index 688a9a9af..3d9b308fd 100755 --- a/MyTracks/AndroidManifest.xml +++ b/MyTracks/AndroidManifest.xml @@ -17,8 +17,8 @@ limitations under the License. + android:versionCode="24" + android:versionName="1.1.1"> diff --git a/MyTracks/res/drawable-mdpi/ic_menu_chartsettings.png b/MyTracks/res/drawable/ic_menu_chartsettings.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_chartsettings.png rename to MyTracks/res/drawable/ic_menu_chartsettings.png diff --git a/MyTracks/res/drawable-mdpi/ic_menu_lastsegment.png b/MyTracks/res/drawable/ic_menu_lastsegment.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_lastsegment.png rename to MyTracks/res/drawable/ic_menu_lastsegment.png diff --git a/MyTracks/res/drawable-mdpi/ic_menu_pauserecording.png b/MyTracks/res/drawable/ic_menu_pauserecording.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_pauserecording.png rename to MyTracks/res/drawable/ic_menu_pauserecording.png diff --git a/MyTracks/res/drawable-mdpi/ic_menu_recordtrack.png b/MyTracks/res/drawable/ic_menu_recordtrack.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_recordtrack.png rename to MyTracks/res/drawable/ic_menu_recordtrack.png diff --git a/MyTracks/res/drawable-mdpi/ic_menu_sensorstatus.png b/MyTracks/res/drawable/ic_menu_sensorstatus.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_sensorstatus.png rename to MyTracks/res/drawable/ic_menu_sensorstatus.png diff --git a/MyTracks/res/drawable-mdpi/ic_menu_statistics.png b/MyTracks/res/drawable/ic_menu_statistics.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_statistics.png rename to MyTracks/res/drawable/ic_menu_statistics.png diff --git a/MyTracks/res/drawable-mdpi/ic_menu_stoprecording.png b/MyTracks/res/drawable/ic_menu_stoprecording.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_stoprecording.png rename to MyTracks/res/drawable/ic_menu_stoprecording.png diff --git a/MyTracks/res/drawable-mdpi/ic_menu_tracklist.png b/MyTracks/res/drawable/ic_menu_tracklist.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_tracklist.png rename to MyTracks/res/drawable/ic_menu_tracklist.png diff --git a/MyTracks/res/drawable-mdpi/ic_menu_waypoints.png b/MyTracks/res/drawable/ic_menu_waypoints.png similarity index 100% rename from MyTracks/res/drawable-mdpi/ic_menu_waypoints.png rename to MyTracks/res/drawable/ic_menu_waypoints.png diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java index fa257eb04..d94be1329 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java @@ -16,6 +16,7 @@ package com.google.android.apps.mytracks.content; import com.google.android.apps.mytracks.MyTracksConstants; +import com.google.android.apps.mytracks.util.ApiFeatures; import android.content.ContentProvider; import android.content.ContentUris; @@ -371,8 +372,11 @@ public class MyTracksProvider extends ContentProvider { throw new IllegalArgumentException("Unknown URL " + url); } - Log.i(MyTracksConstants.TAG, - "Build query: " + qb.buildQuery(projection, selection, selectionArgs, null, null, sortOrder, null)); + if (ApiFeatures.getInstance().canReuseSQLiteQueryBuilder()) { + Log.i(MyTracksConstants.TAG, + "Build query: " + qb.buildQuery(projection, selection, selectionArgs, + null, null, sortOrder, null)); + } Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder); c.setNotificationUri(getContext().getContentResolver(), url); diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/gdata/GDataWrapper.java b/MyTracks/src/com/google/android/apps/mytracks/io/gdata/GDataWrapper.java index d6ed2083a..75626c825 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/gdata/GDataWrapper.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/gdata/GDataWrapper.java @@ -210,9 +210,10 @@ public class GDataWrapper { errorType = ERROR_AUTH; errorMessage = e.getMessage(); } catch (HttpException e) { - Log.e(MyTracksConstants.TAG, "HttpException, code " + e.getStatusCode(), e); + Log.e(MyTracksConstants.TAG, + "HttpException, code " + e.getStatusCode() + " message " + e.getMessage(), e); errorMessage = e.getMessage(); - if (errorMessage != null && errorMessage.contains("401")) { + if (e.getStatusCode() == 401) { errorType = ERROR_AUTH; } else { errorType = ERROR_CONNECTION; diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/ApiFeatures.java b/MyTracks/src/com/google/android/apps/mytracks/util/ApiFeatures.java index c6dd60c75..7bca3ad1b 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/ApiFeatures.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/ApiFeatures.java @@ -106,6 +106,18 @@ public class ApiFeatures { public boolean hasStrictMode() { return getApiLevel() >= 9; } + + /** + * There's a bug (#1587) in Cupcake and Donut which prevents you from + * using a SQLiteQueryBuilder twice. That is, if you call buildQuery + * on a given instance (to log the statement for debugging), and then + * call query on the same instance to make it actually do the query, + * it'll regenerate the query for the second call, and will screw it + * up. Specifically, it'll add extra parens which don't belong. + */ + public boolean canReuseSQLiteQueryBuilder() { + return getApiLevel() > 4; + } // Visible for testing. protected int getApiLevel() {