From 50a55883d3edc7d4c9b4c521c11ed2c108315b28 Mon Sep 17 00:00:00 2001 From: Andrea Lazzarotto Date: Sat, 1 Apr 2017 15:22:23 +0200 Subject: [PATCH] CB-12626: Updated Android plugin This closes #125 Prefer a slightly slower, but bulletproof, way to check for the splashscreen instead of relying on the Cordova preferences. This fixes the splash screen on several phones. --- src/android/SplashScreen.java | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/android/SplashScreen.java b/src/android/SplashScreen.java index 6f19525..c2424f6 100644 --- a/src/android/SplashScreen.java +++ b/src/android/SplashScreen.java @@ -77,6 +77,18 @@ public class SplashScreen extends CordovaPlugin { } } + private int getSplashId() { + int drawableId = 0; + String splashResource = preferences.getString("SplashScreen", "screen"); + if (splashResource != null) { + drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getClass().getPackage().getName()); + if (drawableId == 0) { + drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getPackageName()); + } + } + return drawableId; + } + @Override protected void pluginInitialize() { if (HAS_BUILT_IN_SPLASH_SCREEN) { @@ -90,17 +102,7 @@ public class SplashScreen extends CordovaPlugin { getView().setVisibility(View.INVISIBLE); } }); - int drawableId = preferences.getInteger("SplashDrawableId", 0); - if (drawableId == 0) { - String splashResource = preferences.getString("SplashScreen", "screen"); - if (splashResource != null) { - drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getClass().getPackage().getName()); - if (drawableId == 0) { - drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getPackageName()); - } - //preferences.set("SplashDrawableId", drawableId); - } - } + int drawableId = getSplashId(); // Save initial orientation. orientation = cordova.getActivity().getResources().getConfiguration().orientation; @@ -205,7 +207,7 @@ public class SplashScreen extends CordovaPlugin { // Splash drawable may change with orientation, so reload it. if (splashImageView != null) { - int drawableId = preferences.getInteger("SplashDrawableId", 0); + int drawableId = getSplashId(); if (drawableId != 0) { splashImageView.setImageDrawable(cordova.getActivity().getResources().getDrawable(drawableId)); } @@ -263,7 +265,7 @@ public class SplashScreen extends CordovaPlugin { @SuppressWarnings("deprecation") private void showSplashScreen(final boolean hideAfterDelay) { final int splashscreenTime = preferences.getInteger("SplashScreenDelay", DEFAULT_SPLASHSCREEN_DURATION); - final int drawableId = preferences.getInteger("SplashDrawableId", 0); + final int drawableId = getSplashId(); final int fadeSplashScreenDuration = getFadeDuration(); final int effectiveSplashDuration = Math.max(0, splashscreenTime - fadeSplashScreenDuration);