DeviceTool
来源:互联网 发布:网络咨询是什么 编辑:程序博客网 时间:2024/06/06 16:17
import java.io.File;import android.annotation.SuppressLint;import android.content.Context;import android.content.Intent;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.content.pm.PackageManager.NameNotFoundException;import android.content.res.Configuration;import android.content.res.Resources;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.os.Build;import android.os.Environment;import android.os.StatFs;import android.provider.Settings.Secure;import android.provider.Telephony;import android.provider.Telephony.Sms;import android.telephony.TelephonyManager;import android.util.DisplayMetrics;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;public class DeviceTool { public static final String TAG = "DeviceTool"; private static final String INVALID_IMEI = "000000000000000"; /** * 获取设备的id * @param context 上下文 * @return */ public static String getDeviceId(Context context) { String deviceId = getIMEI(context); return (deviceId == null || deviceId.equals("")) ? INVALID_IMEI : deviceId; } /** * 获取设备的IMEI号 * @param context * @return */ public static String getIMEI(Context context) { String imei = ""; imei =((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); if (imei != null && !"".equals(imei) && !imei.equals(INVALID_IMEI)) { return imei; } imei = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); if (imei != null && !"".equals(imei) && !imei.equals(INVALID_IMEI)) { return imei; } WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); if (info != null) { return info.getMacAddress(); } return INVALID_IMEI; } /** * 获取到设备的Mac地址 * @param context * @return */ public static String getMac(Context context) { if (context == null) { return INVALID_IMEI; } WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); if (info != null) { return info.getMacAddress(); } return INVALID_IMEI; } /** * 获取到程序的完整名称 * @param context * @return */ public static String getAppVersionName(Context context) { String versionName = ""; try { PackageInfo packageInfo =context.getPackageManager().getPackageInfo(context.getPackageName(), 0); versionName = packageInfo.versionName; } catch (Exception e) { e.printStackTrace(); } return versionName; } /** * 获取到程序的包名信息 * @param context * @return */ public static String getAppPackageName(Context context) { String packageName = ""; try { PackageInfo packageInfo =context.getPackageManager().getPackageInfo(context.getPackageName(), 0); packageName = packageInfo.packageName; } catch (Exception e) { e.printStackTrace(); } return packageName; } /** * 检查一个app是否安装 * @param context * @param packageName * @return */ public static boolean checkApkExist(Context context, String packageName) { if (packageName == null || "".equals(packageName)) return false; try { ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES); return true; } catch (NameNotFoundException e) { Logger.w(TAG, e.toString()); return false; } } /** * 判断SDCard是否存在 [当没有外挂SD卡时,内置ROM也被识别为存在sd卡] * * @return */ public static boolean isSdCardExist() { return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); } /** * SD 卡的空间是否满足某一个值 * @param sizeMb : MIN size * @return */ public static boolean isAvailableSDcardSpace(int sizeMb) { boolean isHasSpace = false; if (isSdCardExist()) { String sdcard = Environment.getExternalStorageDirectory().getPath(); StatFs statFs = new StatFs(sdcard); long blockSize = statFs.getBlockSize(); long blocks = statFs.getAvailableBlocks(); long availableSpare = (blocks * blockSize) / (1024 * 1024); Logger.d(TAG, "SDCard availableSpare = " + availableSpare + " MB"); if (availableSpare > sizeMb) { isHasSpace = true; } } else { Logger.e(TAG, "No sdcard!"); } return isHasSpace; } /** * 内部内存是否可用 * @param sizeMb: MIN limit size * @return */ public static boolean isAvailableInternalMemory(int sizeMb) { long availableSpare = getAvailableInternalMemorySize(); if (availableSpare > sizeMb) { return true; } else { return false; } } /** * 获取设备的内部可用内存 * @return MB */ public static long getAvailableInternalMemorySize() { File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); long availableSpare = (availableBlocks * blockSize) / (1024 * 1024); Logger.d(TAG, "Device Available InternalMemorySize = " + availableSpare + " MB"); return availableSpare; } /** * @return 版本号 * 10 Android 2.3.3-2.3.7; * 13 Android 3.2; * 14 Android 4.0; * 19 Android 4.4 KitKat */ public static int getDeviceSDKVersion() { int sdkVersion = Build.VERSION.SDK_INT;// Integer.parseInt(Build.VERSION.SDK); return sdkVersion; } /** * 获取屏幕的显示信息 * @return */ public static DisplayMetrics getDisplayMetrics(Context context) { Resources resources = context.getResources(); return resources.getDisplayMetrics(); } /** * 获取屏幕的高度 * @param context * @return */ public static int getScreenHight(Context context) { DisplayMetrics dm = getDisplayMetrics(context); return dm.heightPixels; } /** * 获取屏幕的宽度 * @param context * @return */ public static int getScreenWidth(Context context) { DisplayMetrics dm = getDisplayMetrics(context); return dm.widthPixels; } /** * 获取屏幕的密度 * @param context * @return */ public static float getScreenDensity(Context context) { DisplayMetrics dm = getDisplayMetrics(context); return dm.density; } /** * 获取状态栏的高度 * @param context * @return */ public static int getStatusBarHeight(Context context) { int result = 0; Resources res = context.getResources(); int resourceId = res.getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = res.getDimensionPixelSize(resourceId); } return result; } /** * 屏幕是否是横屏 * @param context * @return */ public static boolean isScreenLandscape(Context context) { int orientation = context.getResources().getConfiguration().orientation; if (orientation == Configuration.ORIENTATION_LANDSCAPE) { return true; } else if (orientation == Configuration.ORIENTATION_PORTRAIT) { return false; } return false; } /** * 获取默认的短信程序名称 * @param context 上下文 * @return */ public static String getDefaultSmsAppName(Context context) { String smsApp = Telephony.Sms.getDefaultSmsPackage(context); return smsApp; } /** * 改变默认的短信应用 * @param context * @param packageName */ public static void changeDefaultSMSApp(Context context, String packageName) { Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Sms.Intents.EXTRA_PACKAGE_NAME, packageName); context.startActivity(intent); } /** * 控制某一个editText上键盘输入是否可用 * @param editText * @param isShow */ public static void showEditTextKeyboard(EditText editText, boolean isShow) { Logger.d(TAG, "showKeyboard isShow = " + isShow); if (null == editText) { return; } InputMethodManager imm = (InputMethodManager) editText.getContext().getSystemService( Context.INPUT_METHOD_SERVICE); if (isShow) { imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED); // show } else { imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); // hide } }}
0 0
- DeviceTool
- 关于iOS六大基本设计模式
- 用工厂流水线的方式来理解 RxJava 的概念
- python 闭包
- 基于CSipSimple开发的VOIP网络电话 iCaller for Android
- #250 – 在FlowDocument中使用Section (Including a Section Block in a FlowDocument)
- DeviceTool
- js闭包的简单使用
- Android Studio添加assets文件夹
- 跨平台模块tagg2,让nodejs多线程支持
- #pragma pack(n)和__attribute__((aligned(m)))的区别
- 多路查找树(B树)
- Ubuntu 安装.run文件
- JavaScript异步编程的Promise模式
- Android中管理多个Fragment,解决重叠的问题