package com.thefinestartist.utils.content; import android.annotation.TargetApi; import android.app.WallpaperManager; import android.content.BroadcastReceiver; import android.content.ComponentCallbacks; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.IntentSender; import android.content.ServiceConnection; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.AssetManager; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.UserHandle; import android.support.annotation.AttrRes; import android.support.annotation.ColorInt; import android.support.annotation.ColorRes; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.annotation.StyleRes; import android.support.annotation.StyleableRes; import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import com.thefinestartist.Base; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; /** * ContextUtil helps to manage {@link Context} conveniently. * * @author Leonardo Taehwan Kim */ public class ContextUtil { public static boolean bindService(Intent service, ServiceConnection conn, int flags) { return Base.getContext().bindService(service, conn, flags); } public static int checkCallingOrSelfPermission(String permission) { return Base.getContext().checkCallingOrSelfPermission(permission); } public static int checkCallingOrSelfUriPermission(Uri uri, int modeFlags) { return Base.getContext().checkCallingOrSelfUriPermission(uri, modeFlags); } public static int checkCallingPermission(String permission) { return Base.getContext().checkCallingPermission(permission); } public static int checkCallingUriPermission(Uri uri, int modeFlags) { return Base.getContext().checkCallingUriPermission(uri, modeFlags); } public static int checkPermission(String permission, int pid, int uid) { return Base.getContext().checkPermission(permission, pid, uid); } public static int checkSelfPermission(@NonNull String permission) { return ContextCompat.checkSelfPermission(Base.getContext(), permission); } public static int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) { return Base.getContext().checkUriPermission(uri, pid, uid, modeFlags); } public static int checkUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags) { return Base.getContext().checkUriPermission(uri, readPermission, writePermission, pid, uid, modeFlags); } public static Context createPackageContext(String packageName, int flags) throws PackageManager.NameNotFoundException { return Base.getContext().createPackageContext(packageName, flags); } public static String[] databaseList() { return Base.getContext().databaseList(); } public static boolean deleteDatabase(String name) { return Base.getContext().deleteDatabase(name); } public static boolean deleteFile(String name) { return Base.getContext().deleteFile(name); } public static void enforceCallingOrSelfPermission(String permission, String message) { Base.getContext().enforceCallingOrSelfPermission(permission, message); } public static void enforceCallingOrSelfUriPermission(Uri uri, int modeFlags, String message) { Base.getContext().enforceCallingOrSelfUriPermission(uri, modeFlags, message); } public static void enforceCallingPermission(String permission, String message) { Base.getContext().enforceCallingPermission(permission, message); } public static void enforceCallingUriPermission(Uri uri, int modeFlags, String message) { Base.getContext().enforceCallingUriPermission(uri, modeFlags, message); } public static void enforcePermission(String permission, int pid, int uid, String message) { Base.getContext().enforcePermission(permission, pid, uid, message); } public static void enforceUriPermission(Uri uri, int pid, int uid, int modeFlags, String message) { Base.getContext().enforceUriPermission(uri, pid, uid, modeFlags, message); } public static void enforceUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags, String message) { Base.getContext().enforceUriPermission(uri, readPermission, writePermission, pid, uid, modeFlags, message); } public static String[] fileList() { return Base.getContext().fileList(); } public static Context getApplicationContext() { return Base.getContext().getApplicationContext(); } public static ApplicationInfo getApplicationInfo() { return Base.getContext().getApplicationInfo(); } public static AssetManager getAssets() { return Base.getContext().getAssets(); } public static File getCacheDir() { return Base.getContext().getCacheDir(); } public static ClassLoader getClassLoader() { return Base.getContext().getClassLoader(); } public static File getCodeCacheDir() { return new ContextCompat().getCodeCacheDir(Base.getContext()); } @ColorInt public static int getColor(@ColorRes int colorRes) { return ContextCompat.getColor(Base.getContext(), colorRes); } public static ColorStateList getColorStateList(@ColorRes int colorRes) { return ContextCompat.getColorStateList(Base.getContext(), colorRes); } public static ContentResolver getContentResolver() { return Base.getContext().getContentResolver(); } public static File getDatabasePath(String name) { return Base.getContext().getDatabasePath(name); } public static File getDir(String name, int mode) { return Base.getContext().getDir(name, mode); } public static Drawable getDrawable(@DrawableRes int drawableRes) { return ContextCompat.getDrawable(Base.getContext(), drawableRes); } @Nullable @TargetApi(8) public static File getExternalCacheDir() { return Base.getContext().getExternalCacheDir(); } public static File[] getExternalCacheDirs() { return ContextCompat.getExternalCacheDirs(Base.getContext()); } @Nullable @TargetApi(8) public static File getExternalFilesDir(String type) { return Base.getContext().getExternalFilesDir(type); } public static File[] getExternalFilesDirs(String type) { return ContextCompat.getExternalFilesDirs(Base.getContext(), type); } @TargetApi(21) public static File[] getExternalMediaDirs() { return Base.getContext().getExternalMediaDirs(); } public static File getFileStreamPath(String name) { return Base.getContext().getFileStreamPath(name); } public static File getFilesDir() { return Base.getContext().getFilesDir(); } public static Looper getMainLooper() { return Base.getContext().getMainLooper(); } public static File getNoBackupFilesDir() { return new ContextCompat().getNoBackupFilesDir(Base.getContext()); } @TargetApi(11) public static File getObbDir() { return Base.getContext().getObbDir(); } public static File[] getObbDirs() { return ContextCompat.getObbDirs(Base.getContext()); } @TargetApi(8) public static String getPackageCodePath() { return Base.getContext().getPackageCodePath(); } public static PackageManager getPackageManager() { return Base.getContext().getPackageManager(); } public static String getPackageName() { return Base.getContext().getPackageName(); } @TargetApi(8) public static String getPackageResourcePath() { return Base.getContext().getPackageResourcePath(); } public static Resources getResources() { return Base.getContext().getResources(); } public static SharedPreferences getSharedPreferences(String name, int mode) { return Base.getContext().getSharedPreferences(name, mode); } public static String getString(@StringRes int stringRes) { return Base.getContext().getString(stringRes); } public static String getString(@StringRes int stringRes, Object... formatArgs) { return Base.getContext().getString(stringRes, formatArgs); } @TargetApi(23) public static <T> T getSystemService(Class<T> serviceClass) { return Base.getContext().getSystemService(serviceClass); } public static Object getSystemService(String name) { return Base.getContext().getSystemService(name); } @TargetApi(23) public static String getSystemServiceName(Class<?> serviceClass) { return Base.getContext().getSystemServiceName(serviceClass); } public static CharSequence getText(@StringRes int stringRes) { return Base.getContext().getText(stringRes); } public static Resources.Theme getTheme() { return Base.getContext().getTheme(); } public static Drawable getWallpaper() { return WallpaperManager.getInstance(Base.getContext()).getDrawable(); } public static int getWallpaperDesiredMinimumHeight() { return WallpaperManager.getInstance(Base.getContext()).getDesiredMinimumHeight(); } public static int getWallpaperDesiredMinimumWidth() { return WallpaperManager.getInstance(Base.getContext()).getDesiredMinimumWidth(); } public static void grantUriPermission(String toPackage, Uri uri, int modeFlags) { Base.getContext().grantUriPermission(toPackage, uri, modeFlags); } public static boolean isRestricted() { return Base.getContext().isRestricted(); } public static TypedArray obtainStyledAttributes(@StyleableRes int[] attrs) { return Base.getContext().obtainStyledAttributes(attrs); } public static TypedArray obtainStyledAttributes(AttributeSet set, @StyleableRes int[] attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes) { return Base.getContext().obtainStyledAttributes(set, attrs, defStyleAttr, defStyleRes); } public static TypedArray obtainStyledAttributes(AttributeSet set, @StyleableRes int[] attrs) { return Base.getContext().obtainStyledAttributes(set, attrs); } public static TypedArray obtainStyledAttributes(@StyleRes int resid, @StyleableRes int[] attrs) { return Base.getContext().obtainStyledAttributes(resid, attrs); } public static FileInputStream openFileInput(String name) throws FileNotFoundException { return Base.getContext().openFileInput(name); } public static FileOutputStream openFileOutput(String name, int mode) throws FileNotFoundException { return Base.getContext().openFileOutput(name, mode); } public static SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) { return Base.getContext().openOrCreateDatabase(name, mode, factory); } @TargetApi(11) public static SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) { return Base.getContext().openOrCreateDatabase(name, mode, factory, errorHandler); } public static Drawable peekWallpaper() { return WallpaperManager.getInstance(Base.getContext()).peekDrawable(); } @TargetApi(14) public static void registerComponentCallbacks(ComponentCallbacks callback) { Base.getContext().registerComponentCallbacks(callback); } public static Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { return Base.getContext().registerReceiver(receiver, filter); } public static Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler) { return Base.getContext().registerReceiver(receiver, filter, broadcastPermission, scheduler); } // public static void removeStickyBroadcast(Intent intent) { // Base.getContext().removeStickyBroadcast(intent); // } // // @TargetApi(17) // public static void removeStickyBroadcastAsUser(Intent intent, UserHandle user) { // Base.getContext().removeStickyBroadcastAsUser(intent, user); // } public static void revokeUriPermission(Uri uri, int modeFlags) { Base.getContext().revokeUriPermission(uri, modeFlags); } public static void sendBroadcast(Intent intent, String receiverPermission) { Base.getContext().sendBroadcast(intent, receiverPermission); } public static void sendBroadcast(Intent intent) { Base.getContext().sendBroadcast(intent); } @TargetApi(17) public static void sendBroadcastAsUser(Intent intent, UserHandle user) { Base.getContext().sendBroadcastAsUser(intent, user); } @TargetApi(17) public static void sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission) { Base.getContext().sendBroadcastAsUser(intent, user, receiverPermission); } public static void sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { Base.getContext().sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras); } public static void sendOrderedBroadcast(Intent intent, String receiverPermission) { Base.getContext().sendOrderedBroadcast(intent, receiverPermission); } @TargetApi(17) public static void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { Base.getContext().sendOrderedBroadcastAsUser(intent, user, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras); } // public static void sendStickyBroadcast(Intent intent) { // Base.getContext().sendStickyBroadcast(intent); // } // // @TargetApi(17) // public static void sendStickyBroadcastAsUser(Intent intent, UserHandle user) { // Base.getContext().sendStickyBroadcastAsUser(intent, user); // } // // public static void sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { // Base.getContext().sendStickyOrderedBroadcast(intent, resultReceiver, scheduler, initialCode, initialData, initialExtras); // } // // @TargetApi(17) // public static void sendStickyOrderedBroadcastAsUser(Intent intent, UserHandle user, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { // Base.getContext().sendStickyOrderedBroadcastAsUser(intent, user, resultReceiver, scheduler, initialCode, initialData, initialExtras); // } public static void setTheme(@StyleRes int styleRes) { Base.getContext().setTheme(styleRes); } public static void setWallpaper(InputStream data) throws IOException { WallpaperManager.getInstance(Base.getContext()).setStream(data); } public static void setWallpaper(Bitmap bitmap) throws IOException { WallpaperManager.getInstance(Base.getContext()).setBitmap(bitmap); } public static boolean startActivities(Intent[] intents, Bundle options) { for (Intent intent : intents) if (intent != null) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); return ContextCompat.startActivities(Base.getContext(), intents, options); } public static boolean startActivities(Intent[] intents) { for (Intent intent : intents) if (intent != null) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); return ContextCompat.startActivities(Base.getContext(), intents); } public static void startActivity(@NonNull Intent intent) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Base.getContext().startActivity(intent); } @TargetApi(16) public static void startActivity(Intent intent, Bundle options) { Base.getContext().startActivity(intent, options); } public static boolean startInstrumentation(ComponentName className, String profileFile, Bundle arguments) { return Base.getContext().startInstrumentation(className, profileFile, arguments); } @TargetApi(16) public static void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options) throws IntentSender.SendIntentException { Base.getContext().startIntentSender(intent, fillInIntent, flagsMask, flagsValues, extraFlags, options); } public static void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags) throws IntentSender.SendIntentException { Base.getContext().startIntentSender(intent, fillInIntent, flagsMask, flagsValues, extraFlags); } public static ComponentName startService(Intent service) { return Base.getContext().startService(service); } public static boolean stopService(Intent service) { return Base.getContext().stopService(service); } public static void unbindService(ServiceConnection conn) { Base.getContext().unbindService(conn); } @TargetApi(14) public static void unregisterComponentCallbacks(ComponentCallbacks callback) { Base.getContext().unregisterComponentCallbacks(callback); } public static void unregisterReceiver(BroadcastReceiver receiver) { Base.getContext().unregisterReceiver(receiver); } }