diff options
Diffstat (limited to 'android/src/com')
4 files changed, 38 insertions, 16 deletions
diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index bb3766b848..1e8da8a563 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -2,14 +2,14 @@ package com.mapswithme.maps; import android.graphics.Bitmap; import android.location.Location; +import android.text.TextUtils; + import androidx.annotation.IntDef; import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.Size; import androidx.annotation.UiThread; -import android.text.TextUtils; - import com.mapswithme.maps.ads.Banner; import com.mapswithme.maps.ads.LocalAdInfo; import com.mapswithme.maps.api.ParsedRoutingData; @@ -528,6 +528,15 @@ public class Framework public static native void nativeSetSearchViewport(double lat, double lon, int zoom); + /** + * In case of the app was dumped by system to the hard drive, Java map object can be + * restored from parcelable, but c++ framework is created from scratch and internal + * place page object is not initialized. So, do not restore place page in this case. + * + * @return true if c++ framework has initialized internal place page object, otherwise - false. + */ + public static native boolean nativeHasPlacePageInfo(); + public enum LocalAdsEventType { LOCAL_ADS_EVENT_SHOW_POINT, diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java index 871b583185..0b720e5a61 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java @@ -1,14 +1,13 @@ package com.mapswithme.maps.bookmarks.data; import androidx.annotation.IntDef; +import androidx.annotation.IntRange; import androidx.annotation.MainThread; import androidx.annotation.NonNull; -import androidx.annotation.IntRange; import androidx.annotation.Nullable; - +import com.mapswithme.maps.PrivateVariables; import com.mapswithme.maps.base.DataChangedListener; import com.mapswithme.maps.base.Observable; -import com.mapswithme.maps.PrivateVariables; import com.mapswithme.maps.metrics.UserActionsLogger; import com.mapswithme.util.KeyValue; import com.mapswithme.util.UTM; @@ -125,11 +124,15 @@ public enum BookmarkManager setVisibility(catId, !isVisible); } + @Nullable public Bookmark addNewBookmark(double lat, double lon) { final Bookmark bookmark = nativeAddBookmarkToLastEditedCategory(lat, lon); - UserActionsLogger.logAddToBookmarkEvent(); - Statistics.INSTANCE.trackBookmarkCreated(); + if (bookmark != null) + { + UserActionsLogger.logAddToBookmarkEvent(); + Statistics.INSTANCE.trackBookmarkCreated(); + } return bookmark; } @@ -466,7 +469,7 @@ public enum BookmarkManager nativeUploadToCatalog(rules.ordinal(), category.getId()); } - @NonNull + @Nullable public Bookmark updateBookmarkPlacePage(long bmkId) { return nativeUpdateBookmarkPlacePage(bmkId); @@ -930,7 +933,7 @@ public enum BookmarkManager private native int nativeGetTracksCount(long catId); - @NonNull + @Nullable private native Bookmark nativeUpdateBookmarkPlacePage(long bmkId); @Nullable @@ -974,7 +977,7 @@ public enum BookmarkManager private native void nativeShowBookmarkCategoryOnMap(long catId); - @NonNull + @Nullable private native Bookmark nativeAddBookmarkToLastEditedCategory(double lat, double lon); private native long nativeGetLastEditedCategory(); diff --git a/android/src/com/mapswithme/maps/widget/placepage/BottomSheetPlacePageController.java b/android/src/com/mapswithme/maps/widget/placepage/BottomSheetPlacePageController.java index 1c74686a36..bea214ef02 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/BottomSheetPlacePageController.java +++ b/android/src/com/mapswithme/maps/widget/placepage/BottomSheetPlacePageController.java @@ -9,11 +9,6 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.location.Location; import android.os.Bundle; -import androidx.annotation.DrawableRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.view.GestureDetectorCompat; -import androidx.appcompat.widget.Toolbar; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; @@ -21,6 +16,11 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.Toolbar; +import androidx.core.view.GestureDetectorCompat; import com.mapswithme.maps.Framework; import com.mapswithme.maps.R; import com.mapswithme.maps.ads.CompoundNativeAdLoader; @@ -525,6 +525,12 @@ public class BottomSheetPlacePageController implements PlacePageController, Loca if (mPlacePageBehavior.getState() == AnchorBottomSheetBehavior.STATE_HIDDEN) return; + if (!Framework.nativeHasPlacePageInfo()) + { + close(); + return; + } + MapObject object = inState.getParcelable(EXTRA_MAP_OBJECT); if (object == null) return; diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index abd4e2b91e..0e6db36928 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -2079,7 +2079,11 @@ public class PlacePageView extends NestedScrollView @Override public void onBookmarkSaved(long bookmarkId, boolean movedFromCategory) { - setMapObject(BookmarkManager.INSTANCE.updateBookmarkPlacePage(bookmarkId), null); + Bookmark updatedBookmark = BookmarkManager.INSTANCE.updateBookmarkPlacePage(bookmarkId); + if (updatedBookmark == null) + return; + + setMapObject(updatedBookmark, null); NetworkPolicy policy = NetworkPolicy.newInstance(NetworkPolicy.getCurrentNetworkUsageStatus()); refreshViews(policy); } |