关于手机系统管理的工具类utils

2024-06-01 08:08

本文主要是介绍关于手机系统管理的工具类utils,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于手机系统以及应用管理的工具类_总有你想要的

做系统管理或者软件应用管理如手机卫士类软件会用到,可以拿来直接用~比较简单不多说直接上代码:
public class MSUtils {/*** 显示文本小提示* @param context* @param string*/public static void showMsg(Context context, String msg) {Toast.makeText(context, msg, 0).show();}/*** 将一个字符串(明文)用md5加密, 返回密文* @param string* @return*/public static String md5(String string) {StringBuffer sb = new StringBuffer();try {// 创建用于加密的加密对象MessageDigest digest = MessageDigest.getInstance("md5");// 将字符串转换为一个16位的byte[]byte[] bytes = digest.digest(string.getBytes("utf-8"));for (byte b : bytes) {// 遍历// 与255(0xff)做与运算(&)后得到一个255以内的数值int number = b & 255;// 也可以& 0xff// 转化为16进制形式的字符串, 不足2位前面补0String numberString = Integer.toHexString(number);if (numberString.length() == 1) {numberString = 0 + numberString;}// 连接成密文sb.append(numberString);}} catch (Exception e) {e.printStackTrace();}return sb.toString();}/*** 得到SIM卡的序列号* @param context* @return*/public static String getSimNumber(Context context) {TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);return manager.getSimSerialNumber();}/*** 发送短信* @param safeNumber*/public static void sendSms(String safeNumber) {SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage(safeNumber, null, "Sim chaged, care!", null, null);}/*** 发送短信* @param safeNumber*/public static void sendSms(String safeNumber, String msg) {SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage(safeNumber, null, msg, null, null);}/*** 对手机锁屏* @param context*/public static void lock(Context context) {DevicePolicyManager manager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);manager.resetPassword("123456", 0);//设置密码manager.lockNow();//立即锁屏}/*** 播放警报音乐* @param context*/public static void playAlarm(Context context) {MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.alert);mediaPlayer.setLooping(true);//循环播放mediaPlayer.setVolume(1, 1);//设置音量最大mediaPlayer.start();//播放}/*** 删除手机数据* @param context*/public static void reset(Context context) {DevicePolicyManager manager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);//清理数据manager.wipeData(0);}/*** 判断指定的服务是否开启* @param context* @param className* @return*/public static boolean isServiceRunning(Context context, String className) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningServiceInfo> runningServices = am.getRunningServices(Integer.MAX_VALUE); // 取出所有运行的for (RunningServiceInfo info : runningServices) {String serviceClassName = info.service.getClassName();if (serviceClassName.equals(className)) {return true;}}return false;}/*** 得到手机中所有应用信息的集合*/public static Map<Boolean, List<AppInfo>> getAllAppInfos(Context context) {SystemClock.sleep(1000);Map<Boolean, List<AppInfo>> map = new HashMap<Boolean, List<AppInfo>>();List<AppInfo> systemInfos = new ArrayList<AppInfo>();map.put(true, systemInfos);List<AppInfo> userInfos = new ArrayList<AppInfo>();map.put(false, userInfos);//读取手机中所有应用信息数据PackageManager packageManager = context.getPackageManager();Intent intent = new Intent();intent.setAction(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent, 0);for(ResolveInfo ri : resolveInfos) {//packageNameString packageName = ri.activityInfo.packageName;//appNameString appName = ri.loadLabel(packageManager).toString();//iconDrawable icon = ri.loadIcon(packageManager);//isSystemboolean isSystem = true;try {isSystem = isSystemApp(packageManager, packageName);} catch (Exception e) {e.printStackTrace();}AppInfo appInfo = new AppInfo(packageName, appName, icon, isSystem);if(isSystem) {systemInfos.add(appInfo);} else {userInfos.add(appInfo);}}return map;}/*** 判断指定包名所对应的应用是否是系统应用* @param pm* @param packageName* @return* @throws Exception*/private static boolean isSystemApp(PackageManager pm, String packageName) throws Exception {PackageInfo packageInfo = pm.getPackageInfo(packageName, 0);return (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0;}/*** 得到所有正在运行的进程的信息集合* @param context* @param systemtaskInfos* @param usertaskInfos*/public static void getAllTaskInfos(Context context,List<TaskInfo> systemtaskInfos, List<TaskInfo> usertaskInfos) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();PackageManager pm = context.getPackageManager();for (RunningAppProcessInfo processInfo : processInfos) {TaskInfo taskInfo = new TaskInfo();// 包名String packageName = processInfo.processName;//过滤当前应用if(packageName.equals(context.getPackageName())) {continue;//当前应用的进程信息不要保存到集合中}taskInfo.setPackageName(packageName);// 应用占用的内存MemoryInfo memoryInfo = am.getProcessMemoryInfo(new int[] { processInfo.pid })[0];long memInfoSize = memoryInfo.getTotalPrivateDirty() * 1024; //memory  bytetaskInfo.setMemInfoSize(memInfoSize);try {// 图标Drawable icon = pm.getPackageInfo(packageName, 0).applicationInfo.loadIcon(pm);taskInfo.setIcon(icon);// 应用名称String name = pm.getPackageInfo(packageName, 0).applicationInfo.loadLabel(pm).toString();taskInfo.setAppName(name);// 是否是系统应用进程int flag = pm.getPackageInfo(packageName, 0).applicationInfo.flags;if ((flag & ApplicationInfo.FLAG_SYSTEM) == 0) {// 用户进程taskInfo.setSystem(false);} else {// 系统进程taskInfo.setSystem(true);}} catch (NameNotFoundException e) {//根据包名得到不到PackageInfo//e.printStackTrace();taskInfo.setIcon(context.getResources().getDrawable(R.drawable.ic_launcher));taskInfo.setAppName(packageName);taskInfo.setSystem(true);}//不同类型的Info保存到不同的集合中if(taskInfo.isSystem()) {systemtaskInfos.add(taskInfo);} else {usertaskInfos.add(taskInfo);}}}/*** 得到可用内存的总大小*/public static long getAvailMem(Context context) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();am.getMemoryInfo(outInfo);return outInfo.availMem;}/*** 得到总内存大小*/@TargetApi(Build.VERSION_CODES.JELLY_BEAN)public static long getTotalMem(Context context) {long totalMem = 0;int sysVersion = VERSION.SDK_INT; // 得到当前系统的版本号// 下面的方式只能在JELLY_BEAN(16)及以上版本才有用if (sysVersion >= Build.VERSION_CODES.JELLY_BEAN) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();am.getMemoryInfo(memoryInfo);totalMem = memoryInfo.totalMem;} else {try { // 在版本小于16时, 读取/proc/meminfo文件的第一行来获取总大小File file = new File("/proc/meminfo");FileInputStream fis = new FileInputStream(file);BufferedReader reader = new BufferedReader(new InputStreamReader(fis));String result = reader.readLine();// MemTotal: 510484 kBresult = result.substring(result.indexOf(":") + 1,result.indexOf("k")).trim();// 510484reader.close();totalMem = Integer.parseInt(result) * 1024;} catch (Exception e) {e.printStackTrace();}}return totalMem; }/*** 将大小格式化* @param context* @param byteSize* @return*/public static String formatSize(Context context, long byteSize) {return Formatter.formatFileSize(context, byteSize);}/*** 杀死指定进程*/public static void killProcess(Context context, String packageName) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);am.killBackgroundProcesses(packageName);}/*** 得到运行的进程数* @param context* @return*/public static int getProcessSize(Context context) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();return processInfos.size();}/*** 杀死所有进程* @param context*/public static void killAllProcess(Context context) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();PackageManager pm = context.getPackageManager();for (RunningAppProcessInfo processInfo : processInfos) {// 包名String packageName = processInfo.processName;//过滤当前应用if(packageName.equals(context.getPackageName())) {continue;//当前应用的进程信息不要保存到集合中}killProcess(context, packageName);}}/*** 得到应用的所有流量信息*/public static List<TrafficInfo> getAllTrafficInfos(Context context) {List<TrafficInfo> list = new ArrayList<TrafficInfo>();PackageManager pm = context.getPackageManager();//安装的所有应用(包含没有主界面的)List<ApplicationInfo> infos = pm.getInstalledApplications(0); for(ApplicationInfo info : infos) {TrafficInfo trafficInfo = new TrafficInfo();//appNameString appName = info.loadLabel(pm).toString();trafficInfo.setName(appName);//iconDrawable icon = info.loadIcon(pm);trafficInfo.setIcon(icon);int uid = info.uid;   //userID//inSize 下载流量long inSize = TrafficStats.getUidRxBytes(uid); //receivetrafficInfo.setInSize(inSize);//outSize 上传流量long outSize = TrafficStats.getUidTxBytes(uid);trafficInfo.setOutSize(outSize);list.add(trafficInfo);}return list;}}


这篇关于关于手机系统管理的工具类utils的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020444

相关文章

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔