From baa15f339043ee1e39918f18ccc6d93716e437e3 Mon Sep 17 00:00:00 2001 From: Andrew Shkrob Date: Sat, 7 Oct 2023 09:08:26 +0200 Subject: [PATCH] [android-auto] Fix PendingIntent crash Signed-off-by: Andrew Shkrob --- .../organicmaps/MapPlaceholderActivity.java | 3 ++- .../java/app/organicmaps/MwmActivity.java | 27 +++++++++++++------ .../app/organicmaps/car/CarAppSession.java | 5 ++-- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/MapPlaceholderActivity.java b/android/app/src/main/java/app/organicmaps/MapPlaceholderActivity.java index 44fb128a20..0d0a0db503 100644 --- a/android/app/src/main/java/app/organicmaps/MapPlaceholderActivity.java +++ b/android/app/src/main/java/app/organicmaps/MapPlaceholderActivity.java @@ -34,7 +34,8 @@ public class MapPlaceholderActivity extends BaseMwmFragmentActivity implements D public void onDisplayChangedToDevice(@NonNull Runnable onTaskFinishedCallback) { mRemoveDisplayListener = false; - startActivity(new Intent(this, MwmActivity.class)); + startActivity(new Intent(this, MwmActivity.class) + .putExtra(MwmActivity.EXTRA_UPDATE_THEME, true)); finish(); onTaskFinishedCallback.run(); } diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index 8920ff9db3..9eca339ec3 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -143,6 +143,7 @@ public class MwmActivity extends BaseMwmFragmentActivity public static final String EXTRA_CATEGORY_ID = "category_id"; public static final String EXTRA_BOOKMARK_ID = "bookmark_id"; public static final String EXTRA_TRACK_ID = "track_id"; + public static final String EXTRA_UPDATE_THEME = "update_theme"; private static final String EXTRA_CONSUMED = "mwm.extra.intent.processed"; private static final String[] DOCKED_FRAGMENTS = { SearchFragment.class.getName(), @@ -487,14 +488,6 @@ public class MwmActivity extends BaseMwmFragmentActivity mSearchController.getToolbar() .getViewTreeObserver(); - mDisplayManager = DisplayManager.from(this); - mDisplayManager.addListener(DisplayType.Device, this); - - final Intent intent = getIntent(); - boolean isLaunchByDeepLink = intent != null && !intent.hasCategory(Intent.CATEGORY_LAUNCHER); - initViews(isLaunchByDeepLink); - updateViewsInsets(); - // Note: You must call registerForActivityResult() before the fragment or activity is created. mLocationPermissionRequest = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), this::onLocationPermissionsResult); @@ -502,6 +495,24 @@ public class MwmActivity extends BaseMwmFragmentActivity this::onLocationResolutionResult); mPostNotificationPermissionRequest = registerForActivityResult(new ActivityResultContracts.RequestPermission(), this::onPostNotificationPermissionResult); + + mDisplayManager = DisplayManager.from(this); + if (mDisplayManager.isCarDisplayUsed()) + { + mRemoveDisplayListener = false; + startActivity(new Intent(this, MapPlaceholderActivity.class)); + finish(); + return; + } + mDisplayManager.addListener(DisplayType.Device, this); + + final Intent intent = getIntent(); + final boolean isLaunchByDeepLink = intent != null && !intent.hasCategory(Intent.CATEGORY_LAUNCHER); + initViews(isLaunchByDeepLink); + updateViewsInsets(); + + if (getIntent().getBooleanExtra(EXTRA_UPDATE_THEME, false)) + ThemeSwitcher.INSTANCE.restart(isMapRendererActive()); } private void refreshLightStatusBar() diff --git a/android/app/src/main/java/app/organicmaps/car/CarAppSession.java b/android/app/src/main/java/app/organicmaps/car/CarAppSession.java index 8a42f26041..d0f5f4d235 100644 --- a/android/app/src/main/java/app/organicmaps/car/CarAppSession.java +++ b/android/app/src/main/java/app/organicmaps/car/CarAppSession.java @@ -37,6 +37,7 @@ import app.organicmaps.location.LocationState; import app.organicmaps.location.SensorHelper; import app.organicmaps.location.SensorListener; import app.organicmaps.routing.RoutingController; +import app.organicmaps.util.Config; import app.organicmaps.util.LocationUtils; import app.organicmaps.util.log.Logger; import app.organicmaps.widget.placepage.PlacePageData; @@ -173,7 +174,7 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse mInitFailed = false; try { - MwmApplication.from(getCarContext()).init(() -> {}); + MwmApplication.from(getCarContext()).init(() -> Config.setFirstStartDialogSeen(getCarContext())); } catch (IOException e) { mInitFailed = true; @@ -197,7 +198,7 @@ public final class CarAppSession extends Session implements DefaultLifecycleObse public void onCompassUpdated(double north) { - Map.onCompassUpdated(north, false); + Map.onCompassUpdated(north, true); } @Override