AppUtils

    xiaoxiao2025-09-08  652

    import java.io.File; import java.io.FileOutputStream; import java.util.List; import android.annotation.SuppressLint; import android.app.ActivityManager; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.ThumbnailUtils; import android.os.Environment; import android.provider.Settings.Secure; import android.telephony.TelephonyManager; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.Toast; public class AppUtils { private final static String filePath = "inspect/image"; /* * 隐藏软键盘 */ public static void hideInputWindow(Context context, View view) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } /* * 显示软键盘 */ public static void showInputWindow(Context context, View view) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view, 0); } /* * 获取手机IMSI */ public static String getIMSI(Context context) { TelephonyManager telManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String imsi = telManager.getSubscriberId(); try { imsi = ((TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); } catch (Exception e) { System.out.println("获取IMSI码失败"); imsi = "获取IMSI码失败"; } return imsi; } /** * 获取设备IMEI * @param context * @return */ protected static String getImei(Context context) { String mImei = "NULL"; try { mImei = ((TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); } catch (Exception e) { System.out.println("获取IMEI码失败"); mImei = "获取IMEI码失败"; } return mImei;  } /* * 获取手机唯一识别码 */ public static String getAndroidId(Context context) { String android_id = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); return android_id; } /* * 获取手机号码 */ public static String getLine1Number(Context context) { String mNumber = "NULL"; try { mNumber = ((TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number(); } catch (Exception e) { System.out.println("获取手机号失败"); mNumber = "获取设备的手机号失败"; } if (mNumber.length()<1) { mNumber = "无法获取设备的手机号"; } return mNumber;  } /* * 获取运营商名称 */ public static String getNetworkOperatorName(Context context) { String mNetworkOperatorName = "NULL"; try { mNetworkOperatorName = ((TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE)).getNetworkOperatorName(); } catch (Exception e) { System.out.println("获取运营商名称失败"); mNetworkOperatorName = "获取运营商名称失败"; } return mNetworkOperatorName;  } /* * 获取sim卡序列号 */ public static String getSimSerialNumber(Context context) { String mSimSerialNumber = "NULL"; try { mSimSerialNumber = ((TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE)).getSimSerialNumber(); } catch (Exception e) { System.out.println("获取SIM卡序号码失败"); mSimSerialNumber = "获取SIM卡序号码失败"; } return mSimSerialNumber;  } /* * 获取运营商所在国家 */ public static String getNetworkCountryIso(Context context) { String mNetworkCountryIso = "NULL"; try { mNetworkCountryIso = ((TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE)).getNetworkCountryIso(); } catch (Exception e) { System.out.println("获取运营商所在国家失败"); mNetworkCountryIso = "获取运营商所在国家失败"; } return mNetworkCountryIso;  } /* * 获取运营商编号 */ public static String getNetworkOperator(Context context) { String mNetworkOperator = "NULL"; try { mNetworkOperator = ((TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE)).getNetworkOperator(); } catch (Exception e) { System.out.println("获取运营商编号失败"); mNetworkOperator = "获取运营商编号失败"; } return mNetworkOperator;  } /**    * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache)  *    * @param context  *   */ public static void cleanInternalCache(Context context) { deleteFilesByDirectory(context.getCacheDir()); } /**  * 清除本应用所有数据库(/data/data/com.xxx.xxx/databases)  *  @param context  *   */ @SuppressLint("SdCardPath") public static void cleanDatabases(Context context) { deleteFilesByDirectory(new File("/data/data/" + context.getPackageName() + "/databases")); } /** * 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs)  * @param  context */ @SuppressLint("SdCardPath") public static void cleanSharedPreference(Context context) { deleteFilesByDirectory(new File("/data/data/" + context.getPackageName() + "/shared_prefs")); } /** *按名字清除本应用数据库  *@param context  *@param dbName  *   */ public static void cleanDatabaseByName(Context context, String dbName) { context.deleteDatabase(dbName); } /**  *清除/data/data/com.xxx.xxx/files下的内容  * @param context  */ public static void cleanFiles(Context context) { deleteFilesByDirectory(context.getFilesDir()); } /** * 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache)  * @param  context */ public static void cleanExternalCache(Context context) { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { deleteFilesByDirectory(context.getExternalCacheDir()); } } /**  *清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除 * @param filePath  */ public static void cleanCustomCache(String filePath) { deleteFilesByDirectory(new File(filePath)); } /**  *清除本应用所有的数据  *@param context  * @param filepath  */ public static void cleanApplicationData(Context context, String... filepath) { cleanInternalCache(context); cleanExternalCache(context); cleanDatabases(context); cleanSharedPreference(context); cleanFiles(context); for (String filePath : filepath) { cleanCustomCache(filePath); } } /**  *删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理  * @param directory *   */ private static void deleteFilesByDirectory(File directory) { if (directory != null && directory.exists() && directory.isDirectory()) { for (File item : directory.listFiles()) { item.delete(); } } } /* * 获取traceInfo */ public static String getTraceInfo() { StringBuffer sb = new StringBuffer(); StackTraceElement[] stacks = new Throwable().getStackTrace(); sb.append(" Class:").append(stacks[1].getFileName()).append(";Method:").append(stacks[1].getMethodName()).append(";Line:").append(stacks[1].getLineNumber()); return sb.toString(); } private AppUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获取应用程序名称 */ public static String getAppName(Context context) { try { PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); int labelRes = packageInfo.applicationInfo.labelRes; return context.getResources().getString(labelRes); } catch (NameNotFoundException e) { e.printStackTrace(); } return null; } /** * [获取应用程序版本名称信息] * @param context * @return 当前应用的版本名称 */ public static String getVersionName(Context context) { try { PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); return packageInfo.versionName; } catch (NameNotFoundException e) { e.printStackTrace(); } return null; } public static void print(Context context, String text) { Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); ; } /** * 压缩图片上传 * @param picPath * @return */ private synchronized File compressPicture(String picPath) { int maxWidth = 640, maxHeight = 480; // 设置新图片的大小 String fileName = picPath.substring(picPath.lastIndexOf("/")); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitmap image = BitmapFactory.decodeFile(picPath, options); double ratio = 1D; if (maxWidth > 0 && maxHeight <= 0) { // 限定宽度,高度不做限�? ratio = Math.ceil(options.outWidth / maxWidth); } else if (maxHeight > 0 && maxWidth <= 0) { // 限定高度,不限制宽度 ratio = Math.ceil(options.outHeight / maxHeight); } else if (maxWidth > 0 && maxHeight > 0) { // 高度和宽度都做了限制,这时我们计算在这个限制内能容纳的最大的图片尺寸,不会使图片变形 double _widthRatio = Math.ceil(options.outWidth / maxWidth); double _heightRatio = (double) Math.ceil(options.outHeight / maxHeight); ratio = _widthRatio > _heightRatio ? _widthRatio : _heightRatio; } if (ratio > 1) options.inSampleSize = (int) ratio; options.inJustDecodeBounds = false; options.inPreferredConfig = Bitmap.Config.RGB_565; image = BitmapFactory.decodeFile(picPath, options); // 保存入sdCard File file = new File(filePath + fileName); try { FileOutputStream out = new FileOutputStream(file); if (image.compress(Bitmap.CompressFormat.JPEG, 100, out)) { out.flush(); out.close(); } } catch (Exception e) { e.printStackTrace(); return new File(picPath); } finally { if (image != null && !image.isRecycled()) { image.recycle(); } } return file; } /* * 判断服务是否运行 */ public static boolean isServiceRunning(Context mContext, String className) { boolean isRunning = false; ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(30); if (!(serviceList.size() > 0)) { return false; } for (int i = 0; i < serviceList.size(); i++) { if (serviceList.get(i).service.getClassName().equals(className) == true) { isRunning = true; break; } } return isRunning; } /* * 视频缩略图 */ public static Bitmap getVideoThumbnail(String videoPath, int width, int height, int kind) { Bitmap bitmap = null; // 获取视频的缩略图 bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind); bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); return bitmap; } /* * 视频截图 */ public static Bitmap getVideoThumbnail(String videoPath, int kind) { Bitmap bitmap = null; // 获取视频的缩略图 bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind); return bitmap; } /* * 获取图片缩略图 */ public static Bitmap getImageThumbnail(String imagePath, int width, int height) { Bitmap bitmap = null; BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; // 获取这个图片的宽和高,注意此处的bitmap为null bitmap = BitmapFactory.decodeFile(imagePath, options); options.inJustDecodeBounds = false; // 设为 false // 计算缩放�? int h = options.outHeight; int w = options.outWidth; int beWidth = w / width; int beHeight = h / height; int be = 1; if (beWidth < beHeight) { be = beWidth; } else { be = beHeight; } if (be <= 0) { be = 1; } options.inSampleSize = be; // 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false bitmap = BitmapFactory.decodeFile(imagePath, options); // 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象 bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); return bitmap; } /* * 删除文件 */ public static void deleteFile(String filePath) { File f = new File(filePath); if (f.exists()) { f.delete(); } } /* * 解决scrollview中嵌套listview只显示一行 * 使用方法再每次 刷新之前 设置数据之后调用 */ public static void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目 View listItem = listAdapter.getView(i, null, listView); // 计算子项View 的宽度 listItem.measure(0, 0); // 统计�?有子项的总高度 totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height后得到整个ListView完整显示所要的高度 listView.setLayoutParams(params); } /**  * 半角转换为全角  *   * @param input  * @return  */   public static String ToDBC(String input) {   char[] c = input.toCharArray();   for (int i = 0; i < c.length; i++) {   if (c[i] == 12288) {   c[i] = (char) 32;   continue;   }   if (c[i] > 65280 && c[i] < 65375)   c[i] = (char) (c[i] - 65248);   }   return new String(c);   }   /*** * 删除所有指定目录下的文件 * @param root  文件根目录 */ public static void deleteAllFiles(File root) {   File files[] = root.listFiles();   if (files != null)   for (File f : files) {   if (f.isDirectory()) { // 判断是否为文件夹   deleteAllFiles(f);   try {   f.delete();   } catch (Exception e) {   }   } else {   if (f.exists()) { // 判断是否存在   deleteAllFiles(f);   try {   f.delete();   } catch (Exception e) {   }   }   }   }   }   }
    转载请注明原文地址: https://ju.6miu.com/read-1302426.html
    最新回复(0)