package com.V4Creations.vtulife.util.system; import java.io.File; import java.util.Calendar; import java.util.UUID; import android.annotation.TargetApi; import android.app.Activity; import android.app.DownloadManager; import android.app.DownloadManager.Request; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager.NameNotFoundException; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Build; import android.telephony.TelephonyManager; import android.util.DisplayMetrics; import com.V4Creations.vtulife.R; import com.V4Creations.vtulife.util.StringOperator; import com.V4Creations.vtulife.util.VTULifeConstance; import com.V4Creations.vtulife.util.VTULifeUtils; public class SystemFeatureChecker { public static boolean isInternetConnection(Context context) { ConnectivityManager cn = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo nf = cn.getActiveNetworkInfo(); if (nf != null && nf.isConnected() == true) return true; else return false; } public static String getImei(Context context) { TelephonyManager telephonyManager = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); return telephonyManager.getDeviceId(); } public static int getDisplayWidth(Activity activity) { DisplayMetrics displaymetrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay() .getMetrics(displaymetrics); return displaymetrics.widthPixels; } public static int getDisplayHeight(Activity activity) { DisplayMetrics displaymetrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay() .getMetrics(displaymetrics); return displaymetrics.heightPixels; } public static int getAppVersionCode(Context context) { try { return context.getPackageManager().getPackageInfo( context.getPackageName(), 0).versionCode; } catch (NameNotFoundException e) { throw new RuntimeException(e); } } public static String getAppVersionName(Context context) { try { return context.getPackageManager().getPackageInfo( context.getPackageName(), 0).versionName; } catch (NameNotFoundException e) { throw new RuntimeException(e); } } public static String getDeviceName() { String manufacturer = Build.MANUFACTURER; String model = Build.MODEL; if (model.startsWith(manufacturer)) { return StringOperator.toFullNameFormate(model); } else { return StringOperator.toFullNameFormate(manufacturer) + " " + model; } } public static String getAndroidVersion() { return Build.VERSION.RELEASE; } public static void rateAppOnPlayStore(Activity activity) { Uri uri = Uri.parse("market://details?id=" + activity.getPackageName()); Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri); try { activity.startActivity(myAppLinkToMarket); } catch (ActivityNotFoundException e) { throw e; } } public static void sendFeedback(Activity activity) { Intent i = new Intent(Intent.ACTION_SEND); i.setType("message/rfc822"); i.putExtra(Intent.EXTRA_EMAIL, VTULifeConstance.VTU_LIFE_EMAILS); i.putExtra( Intent.EXTRA_SUBJECT, activity.getString(R.string.feedback_mail_subject, activity.getString(R.string.app_name))); String bugReportBody = String.format( activity.getString(R.string.feedback_mail_body), SystemFeatureChecker.getDeviceName(), activity.getString(R.string.app_name), SystemFeatureChecker.getAppVersionName(activity), SystemFeatureChecker.getAppVersionCode(activity), SystemFeatureChecker.getAndroidVersion()); i.putExtra(Intent.EXTRA_TEXT, bugReportBody); try { activity.startActivity(Intent.createChooser(i, activity.getString(R.string.send_feedback))); } catch (android.content.ActivityNotFoundException ex) { throw ex; } } @TargetApi(Build.VERSION_CODES.GINGERBREAD) public static void downloadFile(Activity activity, String urlString, boolean isBrowserDownload) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD && !isBrowserDownload) { DownloadManager dm = SystemFeatureChecker .getDownloadManager(activity); try { String fileName = getFileNameFromGetURL(urlString); Request request = new Request(Uri.parse(urlString)) .setDestinationInExternalPublicDir( VTULifeUtils.getRootFolder(), VTULifeUtils .getOnlyFolderWithFileName(fileName)) .setTitle(fileName) .setDescription( activity.getString(R.string.downloading_from_vtu_life)); manageApiIssues(request); dm.enqueue(request); } catch (IllegalArgumentException e) { try { Request request = new Request(Uri.parse(urlString)) .setDestinationInExternalPublicDir( VTULifeUtils.getRootFolder(), VTULifeUtils .getOnlyFolderWithFileName(getFileNameFromURL(urlString))) .setDescription( activity.getString(R.string.downloading_from_vtu_life)); manageApiIssues(request); dm.enqueue(request); } catch (Exception ex) { openUrlInBrowser(activity, urlString); } } } else { openUrlInBrowser(activity, urlString); } } private static String getFileNameFromURL(String urlString) { try { return new File(urlString).getName(); } catch (Exception ex) { } return Calendar.getInstance().getTimeInMillis() + ""; } @TargetApi(Build.VERSION_CODES.GINGERBREAD) public static DownloadManager getDownloadManager(Context context) { return (DownloadManager) context .getSystemService(Context.DOWNLOAD_SERVICE); } @SuppressWarnings("deprecation") @TargetApi(Build.VERSION_CODES.HONEYCOMB) private static void manageApiIssues(Request request) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.HONEYCOMB_MR2) { request.setNotificationVisibility(Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } else { request.setNotificationVisibility(Request.VISIBILITY_VISIBLE); } } else request.setShowRunningNotification(true); } public static void openUrlInBrowser(Activity activity, String urlString) { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(urlString)); activity.startActivity(i); } private static String getFileNameFromGetURL(String urlString) { String[] fileNameStrings = urlString.split("download="); if (fileNameStrings.length < 2) throw new IllegalArgumentException("Invalid URL"); return fileNameStrings[1].replace("+", "_"); } public static String getDeviceUuid(Context context) { final TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); final String tmDevice, tmSerial, androidId; tmDevice = "" + tm.getDeviceId(); tmSerial = "" + tm.getSimSerialNumber(); androidId = "" + android.provider.Settings.Secure.getString( context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode()); return deviceUuid.toString(); } public static String getAppPlayStoreURL() { return "https://play.google.com/store/apps/details?id=" + VTULifeConstance.PACKAGE; } }