package com.simplemobiletools.gallery; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Resources; import android.net.Uri; import android.os.Build; import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.Display; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.Window; import android.webkit.MimeTypeMap; import android.widget.Toast; import com.simplemobiletools.gallery.models.Medium; import java.io.File; public class Utils { public static String getFilename(final String path) { return path.substring(path.lastIndexOf("/") + 1); } public static void showToast(Context context, int resId) { Toast.makeText(context, context.getResources().getString(resId), Toast.LENGTH_SHORT).show(); } public static int getActionBarHeight(Context context, Resources res) { final TypedValue tv = new TypedValue(); int height = 0; if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { height = TypedValue.complexToDimensionPixelSize(tv.data, res.getDisplayMetrics()); } return height; } public static int getStatusBarHeight(Resources res) { int id = res.getIdentifier("status_bar_height", "dimen", "android"); if (id > 0) { return res.getDimensionPixelSize(id); } return 0; } public static int getNavBarHeight(Resources res) { int id = res.getIdentifier("navigation_bar_height", "dimen", "android"); if (id > 0) { return res.getDimensionPixelSize(id); } return 0; } public static boolean hasNavBar(Activity act) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { Display display = act.getWindowManager().getDefaultDisplay(); DisplayMetrics realDisplayMetrics = new DisplayMetrics(); display.getRealMetrics(realDisplayMetrics); int realHeight = realDisplayMetrics.heightPixels; int realWidth = realDisplayMetrics.widthPixels; DisplayMetrics displayMetrics = new DisplayMetrics(); display.getMetrics(displayMetrics); int displayHeight = displayMetrics.heightPixels; int displayWidth = displayMetrics.widthPixels; return (realWidth - displayWidth) > 0 || (realHeight - displayHeight) > 0; } else { boolean hasMenuKey = ViewConfiguration.get(act).hasPermanentMenuKey(); boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); return !hasMenuKey && !hasBackKey; } } public static boolean hasStoragePermission(Context cxt) { return ContextCompat.checkSelfPermission(cxt, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; } public static String getMimeType(String url) { final String extension = MimeTypeMap.getFileExtensionFromUrl(url); if (extension != null) { return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); } return ""; } public static void shareMedium(Medium medium, Activity activity) { final String shareTitle = activity.getResources().getString(R.string.share_via); final Intent intent = new Intent(); final File file = new File(medium.getPath()); final Uri uri = Uri.fromFile(file); intent.setAction(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_STREAM, uri); if (medium.getIsVideo()) { intent.setType("video/*"); } else { intent.setType("image/*"); } activity.startActivity(Intent.createChooser(intent, shareTitle)); } public static void showSystemUI(ActionBar actionbar, Window window) { if (actionbar != null) actionbar.show(); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } public static void hideSystemUI(ActionBar actionbar, Window window) { if (actionbar != null) actionbar.hide(); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE); } }