/* * * Copyright (c) 2015, alipay.com * * 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.alipay.euler.andfix; import java.lang.reflect.Method; import android.annotation.SuppressLint; import android.util.Log; /** * Compatibility * * @author sanping.li@alipay.com * */ public class Compat { public static boolean isChecked = false; public static boolean isSupport = false; /** * whether support on the device * * @return true if the device support AndFix */ public static synchronized boolean isSupport() { Log.d("euler", "Compat, isSupport"); if (isChecked) return isSupport; isChecked = true; // not support alibaba's YunOs if (!isYunOS() && AndFix.setup() && isSupportSDKVersion()) { isSupport = true; } if (inBlackList()) { isSupport = false; } return isSupport; } @SuppressLint("DefaultLocale") private static boolean isYunOS() { Log.d("euler", "Compat, isYunOS"); String version = null; String vmName = null; try { Method m = Class.forName("android.os.SystemProperties").getMethod( "get", String.class); version = (String) m.invoke(null, "ro.yunos.version"); vmName = (String) m.invoke(null, "java.vm.name"); } catch (Exception e) { // nothing todo } if ((vmName != null && vmName.toLowerCase().contains("lemur")) || (version != null && version.trim().length() > 0)) { return true; } else { return false; } } // from android 2.3 to android 6.0 private static boolean isSupportSDKVersion() { Log.d("euler", "Compat, isSupportSDKVersion"); if (android.os.Build.VERSION.SDK_INT >= 8 && android.os.Build.VERSION.SDK_INT <= 23) { return true; } return false; } private static boolean inBlackList() { Log.d("euler", "Compat, inBlackList"); return false; } }