package com.itbox.fx.core; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; /** * @author huiyh * * 根据签名判断APK状态 * <ul> * <li>正在开发:1</li> * <li>正式发布:2</li> * <li>被篡改:-1</li> * </ul> */ public class AppState { /**被篡改*/ public static final int STATUS_TAMPER = -1; /**正在开发*/ public static final int STATUS_DEVELOP = 1; /**正式发布*/ public static final int STATUS_RELEASE = 2; // TODO 需要使用同一的keystory /** * <font color=red>需要使用同一的keystory<font/> */ private static final int SHA1_DEBUG = 197583638, SHA1_RELEASE = -624722122; private static int STATE = 0; static{ STATE = STATUS_DEVELOP; // initAppState(); } public static int getState(){ if(STATE == 0){ initAppState(); } // return STATE; return STATUS_DEVELOP; } /** * 正在开发 * @return */ public static boolean isDeveloping(){ return STATUS_DEVELOP == STATE; } /** * 正式发布 * @return */ public static boolean isReleased(){ return STATUS_RELEASE == STATE; } /** * 正式发布 * @return */ public static boolean isTampered(){ return STATUS_TAMPER == STATE; } /** * 初始化App状态:开发or发布or被篡改 * */ private static void initAppState() { STATE = STATUS_DEVELOP; // try { // Context context = getAppContext(); // PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); // Signature sigs = packageInfo.signatures[0]; // L.e(sigs.hashCode() + " hashCode"); // switch (sigs.hashCode()) { // case SHA1_DEBUG: // STATE = STATUS_DEVELOP; // break; // case SHA1_RELEASE: // STATE = STATUS_RELEASE; // break; // default: // STATE = STATUS_TAMPER; //// System.exit(0); // return; // } // } catch (Exception e) { // handleException(e); // } } /** * 获取AppConteaxt * */ private static Context getAppContext() { return Application.getInstance(); } /** * 捕获异常的处理 */ private static void handleException(Exception e) { // 内容可以为空 , 也可替换为相应的异常处理方法 AppException.handle(e); } }