国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發之超實用的系統管理工具類【SD卡,網絡,uri,屏幕,網絡,軟鍵盤,文本,進程等】

2019-10-22 18:15:51
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐山市| 长兴县| 女性| 信宜市| 盐城市| 阿拉善左旗| 定襄县| 宜州市| 辽阳县| 会昌县| 岚皋县| 梁平县| 通化市| 宿州市| 平陆县| 高淳县| 乾安县| 南涧| 益阳市| 南康市| 乌海市| 武冈市| 甘南县| 桑日县| 和顺县| 平定县| 阜南县| 丹江口市| 南江县| 富蕴县| 红河县| 西盟| 乃东县| 汉川市| 辽宁省| 石屏县| 甘谷县| 新巴尔虎左旗| 永仁县| 香格里拉县| 白城市|