android 网络管理开发,Android开发之超实用的系统管理工具类【SD卡,网络,uri,屏幕,网络,软键盘,文本,进程等】...

本文实例讲述了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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值