merge in mnc-dr-ryu-release history after reset to mnc-dr-ryu-dev
diff --git a/java/res/values-pl/strings-talkback-descriptions.xml b/java/res/values-pl/strings-talkback-descriptions.xml
index d1f7f1b..6eda110 100644
--- a/java/res/values-pl/strings-talkback-descriptions.xml
+++ b/java/res/values-pl/strings-talkback-descriptions.xml
@@ -65,7 +65,7 @@
     <string name="keyboard_mode_text" msgid="9138789594969187494">"tekst"</string>
     <string name="keyboard_mode_time" msgid="8558297845514402675">"godzina"</string>
     <string name="keyboard_mode_url" msgid="8072011652949962550">"adres URL"</string>
-    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Niedawne"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Ostatnie"</string>
     <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Osoby"</string>
     <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Obiekty"</string>
     <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Przyroda"</string>
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
index 75b7962..b57e483 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
@@ -196,6 +196,8 @@
                     addShownCategoryId(EmojiCategory.ID_FLAGS);
                 }
             }
+        } else {
+            addShownCategoryId(EmojiCategory.ID_SYMBOLS);
         }
         addShownCategoryId(EmojiCategory.ID_EMOTICONS);
 
@@ -204,9 +206,14 @@
         recentsKbd.loadRecentKeys(mCategoryKeyboardMap.values());
 
         mCurrentCategoryId = Settings.readLastShownEmojiCategoryId(mPrefs, defaultCategoryId);
-        if (mCurrentCategoryId == EmojiCategory.ID_RECENTS &&
+        Log.i(TAG, "Last Emoji category id is " + mCurrentCategoryId);
+        if (!isShownCategoryId(mCurrentCategoryId)) {
+            Log.i(TAG, "Last emoji category " + mCurrentCategoryId +
+                    " is invalid, starting in " + defaultCategoryId);
+            mCurrentCategoryId = defaultCategoryId;
+        } else if (mCurrentCategoryId == EmojiCategory.ID_RECENTS &&
                 recentsKbd.getSortedKeys().isEmpty()) {
-            Log.i(TAG, "No recent emojis found, starting in category " + mCurrentCategoryId);
+            Log.i(TAG, "No recent emojis found, starting in category " + defaultCategoryId);
             mCurrentCategoryId = defaultCategoryId;
         }
     }
@@ -219,6 +226,15 @@
         mShownCategories.add(properties);
     }
 
+    private boolean isShownCategoryId(final int categoryId) {
+        for (final CategoryProperties prop : mShownCategories) {
+            if (prop.mCategoryId == categoryId) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     public static String getCategoryName(final int categoryId, final int categoryPageId) {
         return sCategoryName[categoryId] + "-" + categoryPageId;
     }