17058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard/* 27058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * Copyright (C) 2013 The Android Open Source Project 37058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * 47058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * Licensed under the Apache License, Version 2.0 (the "License"); 57058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * you may not use this file except in compliance with the License. 67058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * You may obtain a copy of the License at 77058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * 87058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * http://www.apache.org/licenses/LICENSE-2.0 97058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * 107058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * Unless required by applicable law or agreed to in writing, software 117058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * distributed under the License is distributed on an "AS IS" BASIS, 127058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * See the License for the specific language governing permissions and 147058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * limitations under the License. 157058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard */ 167058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard 177058b02a9c798c21b169b778be2befc7739f4e9bJean Chalardpackage com.android.inputmethod.compat; 187058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard 197058b02a9c798c21b169b778be2befc7739f4e9bJean Chalardimport android.content.pm.PackageInfo; 207058b02a9c798c21b169b778be2befc7739f4e9bJean Chalardimport android.os.Build.VERSION_CODES; 217058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard 227058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard/** 237058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * A class to encapsulate work-arounds specific to particular apps. 247058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard */ 257058b02a9c798c21b169b778be2befc7739f4e9bJean Chalardpublic class AppWorkaroundsUtils { 261404c1af850236da4fe4ed3825b70cb228a1da5bJean Chalard private final PackageInfo mPackageInfo; // May be null 271404c1af850236da4fe4ed3825b70cb228a1da5bJean Chalard private final boolean mIsBrokenByRecorrection; 287058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard 291404c1af850236da4fe4ed3825b70cb228a1da5bJean Chalard public AppWorkaroundsUtils(final PackageInfo packageInfo) { 307058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard mPackageInfo = packageInfo; 3189fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard mIsBrokenByRecorrection = AppWorkaroundsHelper.evaluateIsBrokenByRecorrection( 3289fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard packageInfo); 3389fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard } 3489fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard 3589fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard public boolean isBrokenByRecorrection() { 3689fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard return mIsBrokenByRecorrection; 377058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard } 387058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard 397058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard public boolean isBeforeJellyBean() { 407058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard if (null == mPackageInfo || null == mPackageInfo.applicationInfo) { 417058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard return false; 427058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard } 437058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard return mPackageInfo.applicationInfo.targetSdkVersion < VERSION_CODES.JELLY_BEAN; 447058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard } 457058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard 467058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard @Override 477058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard public String toString() { 487058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard if (null == mPackageInfo || null == mPackageInfo.applicationInfo) { 497058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard return ""; 507058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard } 517058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard final StringBuilder s = new StringBuilder(); 527058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard s.append("Target application : ") 537058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard .append(mPackageInfo.applicationInfo.name) 547058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard .append("\nPackage : ") 557058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard .append(mPackageInfo.applicationInfo.packageName) 567058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard .append("\nTarget app sdk version : ") 577058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard .append(mPackageInfo.applicationInfo.targetSdkVersion); 587058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard return s.toString(); 597058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard } 607058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard} 61