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.
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 @@
}
}
+ 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 @@
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 @@
// 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 @@
@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);