package com.mcxiaoke.apptoolkit; import android.app.Application; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.widget.Toast; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.mcxiaoke.apptoolkit.db.Database; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Project: apptoolkit * Package: com.mcxiaoke.apptoolkit * User: com.mcxiaoke * Date: 13-6-10 * Time: 下午9:15 */ public class AppContext extends Application { private static final boolean DEBUG = true; private static AppContext sInstance; private Handler mUiHandler; private Gson mGson; private Database mDB; private ExecutorService mExecutor; private boolean mRootGranted; private boolean mBusyboxInstalled; private static String sVersionName; private static int sVersionCode; private static String sPackageName; @Override public void onCreate() { super.onCreate(); sInstance = this; mUiHandler = new Handler(Looper.getMainLooper()); mExecutor = Executors.newCachedThreadPool(); mDB = new Database(this); PackageManager pm = getPackageManager(); try { sPackageName = getPackageName(); PackageInfo info = pm.getPackageInfo(sPackageName, 0); sVersionName = info.versionName; sVersionCode = info.versionCode; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } } public static String getVersionName() { return sVersionName; } public static int getVersionCode() { return sVersionCode; } public static String getPackage() { return sPackageName; } public static boolean isDebug() { return DEBUG; } public static AppContext getApp() { return sInstance; } public static AppContext getApp(Context context) { return (AppContext) context.getApplicationContext(); } public Gson getGson() { if (mGson == null) { mGson = new GsonBuilder() .serializeNulls() .disableHtmlEscaping() .excludeFieldsWithoutExposeAnnotation() .create(); } return mGson; } public ExecutorService getExecutor() { if (mExecutor == null) { mExecutor = Executors.newCachedThreadPool(); } return mExecutor; } public Database getDB() { if (mDB == null) { mDB = new Database(this); } return mDB; } public void setRootGranted(boolean value) { mRootGranted = value; } public boolean isRootGranted(boolean value) { return mRootGranted; } public void setBusyboxInstalled(boolean value) { mBusyboxInstalled = value; } public boolean isBusyboxInstalled() { return mBusyboxInstalled; } public static void showToast(Context context, int resId) { Toast.makeText(context, resId, Toast.LENGTH_LONG).show(); } public static void showToast(Context context, CharSequence text) { Toast.makeText(context, text, Toast.LENGTH_LONG).show(); } public static void postShowToast(final int resId) { final AppContext app = getApp(); app.mUiHandler.post(new Runnable() { @Override public void run() { showToast(app, resId); } }); } public static void postShowToast(final String text) { final AppContext app = getApp(); app.mUiHandler.post(new Runnable() { @Override public void run() { showToast(app, text); } }); } private static final String DEFAULT_TAG = "AppToolkit"; public static void d(String message) { Log.d(DEFAULT_TAG, message); } public static void v(String message) { Log.v(DEFAULT_TAG, message); } public static void e(String message) { Log.e(DEFAULT_TAG, message); } public static void e(Throwable t) { Log.e(DEFAULT_TAG, "Exception: " + t); } public static void v(String tag, String message) { Log.v(tag, message); } public static void e(String tag, String message) { Log.e(tag, message); } public static void e(String tag, Throwable t) { Log.e(tag, "Exception: " + t); } public static void v(String... messages) { for (String message : messages) { Log.v(DEFAULT_TAG, message); } } }