package com.guiying.module.common.utils; import android.app.Activity; import android.content.Context; import android.content.ContextWrapper; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.View; /** * <p>Utils初始化相关 </p> */ public class Utils { private static Context context; private Utils() { throw new UnsupportedOperationException("u can't instantiate me..."); } /** * 初始化工具类 * * @param context 上下文 */ public static void init(Context context) { Utils.context = context.getApplicationContext(); } /** * 获取ApplicationContext * * @return ApplicationContext */ public static Context getContext() { if (context != null) return context; throw new NullPointerException("u should init first"); } /** * View获取Activity的工具 * * @param view view * @return Activity */ public static @NonNull Activity getActivity(View view) { Context context = view.getContext(); while (context instanceof ContextWrapper) { if (context instanceof Activity) { return (Activity) context; } context = ((ContextWrapper) context).getBaseContext(); } throw new IllegalStateException("View " + view + " is not attached to an Activity"); } /** * 全局获取String的方法 * * @param id 资源Id * @return String */ public static String getString(@StringRes int id) { return context.getResources().getString(id); } /** * 判断App是否是Debug版本 * * @return {@code true}: 是<br>{@code false}: 否 */ public static boolean isAppDebug() { if (StringUtils.isSpace(context.getPackageName())) return false; try { PackageManager pm = context.getPackageManager(); ApplicationInfo ai = pm.getApplicationInfo(context.getPackageName(), 0); return ai != null && (ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return false; } } /** * The {@code fragment} is added to the container view with id {@code frameId}. The operation is * performed by the {@code fragmentManager}. */ public static void addFragmentToActivity(@NonNull FragmentManager fragmentManager, @NonNull Fragment fragment, int frameId) { checkNotNull(fragmentManager); checkNotNull(fragment); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.add(frameId, fragment); transaction.commit(); } public static <T> T checkNotNull(T obj) { if (obj == null) { throw new NullPointerException(); } return obj; } }