10dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath/* 20dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * Copyright (C) 2015 The Android Open Source Project 30dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * 40dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * Licensed under the Apache License, Version 2.0 (the "License"); 50dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * you may not use this file except in compliance with the License. 60dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * You may obtain a copy of the License at 70dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * 80dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 90dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * 100dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * Unless required by applicable law or agreed to in writing, software 110dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 120dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * See the License for the specific language governing permissions and 140dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath * limitations under the License 150dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath */ 160dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 170dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamathpackage android.support.v4.text; 180dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 190dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamathimport android.util.Log; 200dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 210dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamathimport java.lang.reflect.InvocationTargetException; 220dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamathimport java.lang.reflect.Method; 230dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamathimport java.util.Locale; 240dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 2595ad49b720f4990d39d05f7e46a5c7bc83afc9d6Chris Banesclass ICUCompatApi23 { 260dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 270dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath private static final String TAG = "ICUCompatIcs"; 280dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 290dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath private static Method sAddLikelySubtagsMethod; 300dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 310dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath static { 320dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath try { 330dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath // This class should always exist on API-23 since it's CTS tested. 340dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath final Class<?> clazz = Class.forName("libcore.icu.ICU"); 350dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath sAddLikelySubtagsMethod = clazz.getMethod("addLikelySubtags", 360dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath new Class[]{ Locale.class }); 370dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath } catch (Exception e) { 380dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath throw new IllegalStateException(e); 390dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath } 400dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath } 410dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 420dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 430dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath public static String maximizeAndGetScript(Locale locale) { 440dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath try { 450dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath final Object[] args = new Object[] { locale }; 460dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath return ((Locale) sAddLikelySubtagsMethod.invoke(null, args)).getScript(); 470dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath } catch (InvocationTargetException e) { 480dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath Log.w(TAG, e); 490dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath } catch (IllegalAccessException e) { 500dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath Log.w(TAG, e); 510dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath } 520dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath 530dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath return locale.getScript(); 540dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath } 550dd57e65bcb8c9f0c7468a69ea3549a54a2482dfNarayan Kamath} 56