aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYohei Yukawa <yukawa@google.com>2016-01-22 00:57:32 -0800
committerYohei Yukawa <yukawa@google.com>2016-01-22 02:22:11 -0800
commit16645966a9509c77f02003e6e07c11d3aa3b0634 (patch)
tree17a5382de39ae082b9982f36167760ca502b3b35
parent995ce45572b9b427c45feac7b0032baba8f3ee7a (diff)
downloadlatinime-16645966a9509c77f02003e6e07c11d3aa3b0634.tar.gz
latinime-16645966a9509c77f02003e6e07c11d3aa3b0634.tar.xz
latinime-16645966a9509c77f02003e6e07c11d3aa3b0634.zip
Support EditorInfo#hintLocales in compat library.
This CL updates LatinIME's compatibility library so that we can access EditorInfo#hintLocales without directly depending on unreleased SDK. Bug: 22859862 Change-Id: I4ba7d294bc314002c3abf8842f097a4249783364
-rw-r--r--java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java14
-rw-r--r--java/src/com/android/inputmethod/compat/LocaleListCompatUtils.java34
2 files changed, 48 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
index 7eefa221a..43714829a 100644
--- a/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/EditorInfoCompatUtils.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.compat;
import android.view.inputmethod.EditorInfo;
import java.lang.reflect.Field;
+import java.util.Locale;
public final class EditorInfoCompatUtils {
// Note that EditorInfo.IME_FLAG_FORCE_ASCII has been introduced
@@ -27,6 +28,8 @@ public final class EditorInfoCompatUtils {
EditorInfo.class, "IME_FLAG_FORCE_ASCII");
private static final Integer OBJ_IME_FLAG_FORCE_ASCII = (Integer) CompatUtils.getFieldValue(
null /* receiver */, null /* defaultValue */, FIELD_IME_FLAG_FORCE_ASCII);
+ private static final Field FIELD_HINT_LOCALES = CompatUtils.getField(
+ EditorInfo.class, "hintLocales");
private EditorInfoCompatUtils() {
// This utility class is not publicly instantiable.
@@ -78,4 +81,15 @@ public final class EditorInfoCompatUtils {
}
return (action != null) ? flags + action : flags.toString();
}
+
+ public static Locale getPrimaryHintLocale(final EditorInfo editorInfo) {
+ if (editorInfo == null) {
+ return null;
+ }
+ final Object localeList = CompatUtils.getFieldValue(editorInfo, null, FIELD_HINT_LOCALES);
+ if (localeList == null) {
+ return null;
+ }
+ return LocaleListCompatUtils.getPrimary(localeList);
+ }
}
diff --git a/java/src/com/android/inputmethod/compat/LocaleListCompatUtils.java b/java/src/com/android/inputmethod/compat/LocaleListCompatUtils.java
new file mode 100644
index 000000000..01030aedd
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/LocaleListCompatUtils.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import java.lang.reflect.Method;
+import java.util.Locale;
+
+public final class LocaleListCompatUtils {
+ private static final Class CLASS_LocaleList = CompatUtils.getClass("android.util.LocaleList");
+ private static final Method METHOD_getPrimary =
+ CompatUtils.getMethod(CLASS_LocaleList, "getPrimary");
+
+ private LocaleListCompatUtils() {
+ // This utility class is not publicly instantiable.
+ }
+
+ public static Locale getPrimary(final Object localeList) {
+ return (Locale) CompatUtils.invoke(localeList, null, METHOD_getPrimary);
+ }
+}