From 95df8a7cdc7fde41041df12d2454cb42bbe6236c Mon Sep 17 00:00:00 2001 From: serso Date: Thu, 12 Feb 2015 22:00:28 +0100 Subject: [PATCH] cpp-117: java.lang.NullPointerException : at com.android.internal.policy.impl.PhoneWindow.onKeyUpPanel(PhoneWindow.java:987) Fixes #117 --- .../org/solovyev/android/calculator/App.java | 19 +++++++++++++++++++ .../android/calculator/BaseActivity.java | 10 ++++++++++ 2 files changed, 29 insertions(+) diff --git a/android-app/src/main/java/org/solovyev/android/calculator/App.java b/android-app/src/main/java/org/solovyev/android/calculator/App.java index 3057b6b9..13f66a37 100644 --- a/android-app/src/main/java/org/solovyev/android/calculator/App.java +++ b/android-app/src/main/java/org/solovyev/android/calculator/App.java @@ -25,7 +25,10 @@ package org.solovyev.android.calculator; import android.app.Application; import android.content.SharedPreferences; import android.content.res.Configuration; +import android.os.Build; import android.preference.PreferenceManager; +import android.text.TextUtils; + import org.solovyev.android.UiThreadExecutor; import org.solovyev.android.Views; import org.solovyev.android.calculator.ga.Ga; @@ -92,6 +95,9 @@ public final class App { @Nonnull private static final Products products = Products.create().add(ProductTypes.IN_APP, Arrays.asList("ad_free")); + @Nullable + private static Boolean lg = null; + private App() { throw new AssertionError(); } @@ -230,4 +236,17 @@ public final class App { public static Preferences.Gui.Theme getTheme() { return Preferences.Gui.getTheme(getPreferences()); } + + public static boolean isLg() { + if (lg == null) { + lg = "lge".equalsIgnoreCase(Build.BRAND) || "lge".equalsIgnoreCase(Build.MANUFACTURER); + } + return lg; + } + + // see https://code.google.com/p/android/issues/detail?id=78154 + // and http://developer.lge.com/community/forums/RetrieveForumContent.dev?detailContsId=FC29190703 + public static boolean shouldOpenMenuManually() { + return isLg() && Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN; + } } diff --git a/android-app/src/main/java/org/solovyev/android/calculator/BaseActivity.java b/android-app/src/main/java/org/solovyev/android/calculator/BaseActivity.java index 68ffcc49..4d4c858f 100644 --- a/android-app/src/main/java/org/solovyev/android/calculator/BaseActivity.java +++ b/android-app/src/main/java/org/solovyev/android/calculator/BaseActivity.java @@ -3,6 +3,7 @@ package org.solovyev.android.calculator; import android.os.Bundle; import android.support.annotation.LayoutRes; import android.support.v7.app.ActionBarActivity; +import android.view.KeyEvent; import android.view.MenuItem; import javax.annotation.Nonnull; @@ -54,6 +55,15 @@ public class BaseActivity extends ActionBarActivity { super.onStop(); } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (App.shouldOpenMenuManually() && keyCode == KeyEvent.KEYCODE_MENU) { + openOptionsMenu(); + return true; + } + return super.onKeyDown(keyCode, event); + } + @Override protected void onResume() { super.onResume();