Android开发之系统管理工具类的示例分析
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,这篇文章主要为大家展示了"Android开发之系统管理工具类的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Android开发之系统管理工具类的示
千家信息网最后更新 2025年01月30日Android开发之系统管理工具类的示例分析
这篇文章主要为大家展示了"Android开发之系统管理工具类的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Android开发之系统管理工具类的示例分析"这篇文章吧。
具体如下:
这是一个系统管理工具类,管理sd卡,判断网络,uri转换,获取屏幕宽高,获取网络类型,隐藏软键盘,复制文本到粘贴板,获取状态栏高度,获取当前进程等。
上代码
import java.io.File;import android.annotation.SuppressLint;import android.annotation.TargetApi;import android.app.Activity;import android.app.ActivityManager;import android.content.ClipData;import android.content.Context;import android.database.Cursor;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.net.Uri;import android.os.Build;import android.os.Environment;import android.os.StatFs;import android.provider.MediaStore;import android.text.TextUtils;import android.util.DisplayMetrics;import android.view.View;import android.view.inputmethod.InputMethodManager;@SuppressWarnings("deprecation")public class SystemUtil { public static final int NETTYPE_WIFI = 0x01; public static final int NETTYPE_CMWAP = 0x02; public static final int NETTYPE_CMNET = 0x03; /** 判断是否手机插入Sd卡 */ public static boolean sdCardUseable() { return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); } /** * 获取Sd卡的总容量 * * @return */ @SuppressLint("NewApi") public static long getSdCardTotalSize() { if(!sdCardUseable()){ return 0; } // 取得SD卡文件路径 File path = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(path.getPath()); // 获取单个数据块的大小(Byte) long blockSize = sf.getBlockSizeLong(); // 获取所有数据块数 long allBlocks = sf.getBlockCountLong(); // 返回SD卡大小 // return allBlocks * blockSize; //单位Byte // return (allBlocks * blockSize)/1024; //单位KB return (allBlocks * blockSize) / 1024 / 1024; // 单位MB } /** * 获取Sd卡的可用容量 * * @return */ @SuppressLint("NewApi") public static long getSdCardFreeSize() { if(!sdCardUseable()){ return 0; } // 取得SD卡文件路径 File path = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(path.getPath()); // 获取单个数据块的大小(Byte) long blockSize = sf.getBlockSizeLong(); // 空闲的数据块的数量 long freeBlocks = sf.getAvailableBlocksLong(); // 返回SD卡空闲大小 // return freeBlocks * blockSize; //单位Byte // return (freeBlocks * blockSize)/1024; //单位KB return (freeBlocks * blockSize) / 1024 / 1024; // 单位MB } /** * 判断是否联网或者漫游 * * @param context * @return boolean */ public static boolean hasNet(Context context) { // 获得ConnectivityManager的管理器 NetworkInfo info = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if (info == null || !info.isConnected()) { return false; } if (info.isRoaming()) { // 漫游判断 return true; } return true; } /** 获得The data stream for the file */ public static String getUrlPath(Activity context, Uri uri) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = context.managedQuery(uri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } /** 从传入Uri获得真实的path */ public String getRealPathFromURI(Activity context, Uri contentUri) { // can post image String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = context.managedQuery(contentUri, proj, // Which columns // to return null, // WHERE clause; which rows to return (all rows) null, // WHERE clause selection arguments (none) null); // Order-by clause (ascending by name) int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } /** 获得屏幕的宽度 */ public static int getScreenWidth(Activity context) { DisplayMetrics outMetrics = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics); return outMetrics.widthPixels; } /** 获取屏幕的高度 */ public static int getScreenHeight(Activity context) { DisplayMetrics outMetrics = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics); return outMetrics.heightPixels; } /** 获得网络的类型 */ public static int getNetworkType(Context context) { int netType = 0; ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo == null) { // 判断是否联网 return netType; } int nType = networkInfo.getType(); // 获得 if (nType == ConnectivityManager.TYPE_MOBILE) { String extraInfo = networkInfo.getExtraInfo(); if (!TextUtils.isEmpty(extraInfo)) { if (extraInfo.toLowerCase().equals("cmnet")) { netType = NETTYPE_CMNET; } else { netType = NETTYPE_CMWAP; } } } else if (nType == ConnectivityManager.TYPE_WIFI) { netType = NETTYPE_WIFI; } return netType; } /** 隐藏软件盘 */ public static void hideSoftKeyborad(Activity context) { final View v = context.getWindow().peekDecorView(); // Retrieve the // current decor // view if (v != null && v.getWindowToken() != null) { InputMethodManager imm = (InputMethodManager) context // 获得输入方法的Manager .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } } /** * 复制文本到剪切板 * * @param context * @param text */ @TargetApi(value = 11) @SuppressLint({ "NewApi", "NewApi" }) public static void copyText(Context context, String text) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { android.content.ClipboardManager clipboardManager = (android.content.ClipboardManager) context .getSystemService(Context.CLIPBOARD_SERVICE); ClipData clipData = ClipData.newPlainText("label", text); clipboardManager.setPrimaryClip(clipData); } else { android.text.ClipboardManager clipboardManager = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText(text); } } /** * 获取状态栏高度 * * @return */ public static int getStatusBarHeight(Context context) { Class> c = null; Object obj = null; java.lang.reflect.Field field = null; int x = 0; int statusBarHeight = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = context.getResources().getDimensionPixelSize(x); return statusBarHeight; } catch (Exception e) { e.printStackTrace(); } return statusBarHeight; } /** * 获取当前进程名 * @param context * @return 进程名 */ public static final String getProcessName(Context context) { String processName = null; // ActivityManager ActivityManager am = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)); while (true) { for (ActivityManager.RunningAppProcessInfo info : am.getRunningAppProcesses()) { if (info.pid == android.os.Process.myPid()) { processName = info.processName; break; } } // go home if (!TextUtils.isEmpty(processName)) { return processName; } // take a rest and again try { Thread.sleep(100L); } catch (InterruptedException ex) { ex.printStackTrace(); } } }}
以上是"Android开发之系统管理工具类的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
管理
单位
工具
管理工具
系统
大小
数据
示例
分析
开发
内容
屏幕
篇文章
网络
进程
高度
单个
容量
文件
文本
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库重命名
服务器开什么端口
网络安全隐患排查整治讲话
惠州甘孜软件开发
小米 系统软件开发工程师
菲律宾网络技术
公司架设影视服务器
科技互联网的商机
网络服务器建设阿帕奇错误
在线考试系统数据库应该有哪些
电驴服务器连不上
信息与网络安全工作方案
安卓软件开发员价格
泛在网是不是全新的网络技术
调用数据库数据生成excel
四十岁学软件开发的出路
陌云科技服务器
电梯服务器改梯速
windows10服务器设置
ai编程会用到数据库吗
公司机房有服务器有辐射吗
增值税发票代理服务器怎么填
软件开发管理学题库
移动网络安全 产业
淄博电商软件开发推荐
华硕网络安全防护
php将数据插入数据库表中
网络技术分哪几种
网络安全实用技术期末考
软件开发岗位责任制