Android工具大雜燴

來吧來吧,今天閒着有空。暫時沒想到要寫什麼好。等以後把所作的項目都整理一下看看。android

那今天就把我用過整理過的Android項目上的工具類收集整理一下。網絡

/**
     * 判斷本機是否安裝了某個應用程序
     * 
     * @param context
     *            Context對象
     * @param packagename
     *            目標應用程序的包名
     * @return true表示已安裝,false表示未安裝
     */
    public static boolean isAppInstalled(Context context, String packagename) {
        PackageInfo packageInfo;
        try {
            packageInfo = context.getPackageManager().getPackageInfo(packagename, 0);
        } catch (NameNotFoundException e) {
            packageInfo = null;
            e.printStackTrace();
        }
        if (packageInfo == null) {
            return false;
        } else {
            return true;
        }
    }
/**
     * 獲取版本號
     * 
     * @param context
     *            Context對象
     * @return 版本號
     */
    public static int getVersionCode(Context context) {
        PackageManager packageManager = context.getPackageManager();
        PackageInfo packageInfo;
        int versionCode = 0;
        try {
            packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
            versionCode = packageInfo.versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return versionCode;
    }
/**
     * 獲取版本名
     * 
     * @param context
     *            Context對象
     * @return 版本名
     */
    public static String getVersionName(Context context) {
        PackageManager packageManager = context.getPackageManager();
        PackageInfo packageInfo;
        String versionName = "";
        try {
            packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
            versionName = packageInfo.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return versionName;
    }
/**
     * 安裝apk
     * 
     * @param context
     *            Context對象
     * @param apkFile
     *            apk文件
     */
    public static void installApp(Context context, File apkFile) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        Uri uri = Uri.fromFile(apkFile);
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        context.startActivity(intent);
    }
/**
     * 返回全部應用的名稱
     * 
     * @param context
     *            Context對象
     * @return 應用程序集合
     */
    public static List<String> getInstalledInfo(Context context) {
        List<String> list = new ArrayList<String>();
        List<PackageInfo> ps = context.getPackageManager().getInstalledPackages(0);
        for (PackageInfo packageInfo : ps) {
            list.add(packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString());
        }
        return list;
    }
/**
     * 獲取設備名稱 <br>
     * 好比:SAMSUNG9300、LEX720
     * 
     * @return 設備名稱
     */
    public static String getPhoneType() {
        return android.os.Build.MODEL;
    }
/**
     * 獲取Android sdk版本 <br>
     * 好比:android4.三、android6.0
     * 
     * @return android sdk版本
     */
    public static String getAndroidSdkVersionName() {
        return "android" + android.os.Build.VERSION.RELEASE;
    }
/**
     * 獲取手機廠商
     * 
     * @return 手機廠商
     */
    public static String getPhoneManufacture() {
        return android.os.Build.MANUFACTURER;
    }
/**
     * 獲取設備的IMEI
     * 
     * @param context
     *            Context對象
     * @return 設備IMEI
     */
    public static String getImei(Context context) {
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        return tm.getDeviceId();
    }
/**
     * 獲取設備惟一id
     * 
     * @param context
     *            Context對象
     * @return 設備惟一id
     */
    public static String getUniqueId(Context context) {
        String imei = getImei(context);
        if (!TextUtils.isEmpty(imei))
            return imei;
        else {
            String phoneId = getPhoneId(context);
            if (!TextUtils.isEmpty(phoneId))
                return phoneId;
        }
        return "unknow";
    }
/**
     * 獲取cpu信息
     * 
     * @return cpu信息
     */
    public static String[] getCpuInfo() {
        String str1 = "/proc/cpuinfo";
        String str2 = "";
        String[] cpuInfo = { "", "" };
        String[] arrayOfString;
        try {
            FileReader fr = new FileReader(str1);
            BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
            str2 = localBufferedReader.readLine();
            arrayOfString = str2.split("\\s+");
            for (int i = 2; i < arrayOfString.length; i++) {
                cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";
            }
            str2 = localBufferedReader.readLine();
            arrayOfString = str2.split("\\s+");
            cpuInfo[1] += arrayOfString[2];
            localBufferedReader.close();
            fr.close();
        } catch (IOException e) {
        }
        return cpuInfo;
    }
/**
     * 獲取SDCard大小
     * 
     * @param context
     *            Context對象
     * @return SDCard大小
     */
    public static String getSDTotalSize(Context context) {
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            File path = Environment.getExternalStorageDirectory();
            StatFs stat = new StatFs(path.getPath());
            long blockSize = stat.getBlockSize();
            long totalBlocks = stat.getBlockCount();
            return Formatter.formatFileSize(context, blockSize * totalBlocks);
        }
        return "unknow";
    }
public class NetworkUtil {
    /**
     * 判斷是否有網絡鏈接
     * 
     * @param context
     *            Context對象
     * @return true表示有網絡,false表示沒有網絡
     */
    public static boolean isNetworkConnected(Context context) {
        if (context != null) {
            ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
            if (mNetworkInfo != null) {
                return mNetworkInfo.isAvailable();
            }
        }
        return false;
    }

    /**
     * 判斷WIFI網絡是否可用
     * 
     * @param context
     *            Context對象
     * @return true表示wifi可用,false表示WiFi不可用
     */
    @SuppressWarnings("deprecation")
    public static boolean isWifiConnected(Context context) {
        if (context != null) {
            ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            if (mWiFiNetworkInfo != null) {
                return mWiFiNetworkInfo.isAvailable();
            }
        }
        return false;
    }

    /**
     * 判斷MOBILE網絡是否可用
     * 
     * @param context
     *            Context對象
     * @return true表示可用,false表示不可用
     */
    @SuppressWarnings("deprecation")
    public static boolean isMobileConnected(Context context) {
        if (context != null) {
            ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mMobileNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            if (mMobileNetworkInfo != null) {
                return mMobileNetworkInfo.isAvailable();
            }
        }
        return false;
    }

    /**
     * 獲取當前網絡鏈接的類型信息
     */
    public static int getConnectedType(Context context) {
        if (context != null) {
            ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
            if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {
                return mNetworkInfo.getType();
            }
        }
        return -1;
    }

    /**
     * 獲取當前網絡類型
     * 
     * @param context
     *            Context對象
     * @return 2G/3G/4G/WIFI/NULL/unknown
     */
    public static String getNetType(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final NetworkInfo info = cm.getActiveNetworkInfo();
        if (info == null || !info.isAvailable()) {
            return "no";
        }
        if (info.getType() == ConnectivityManager.TYPE_WIFI) {
            return "WIFI";
        }
        if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
            int sub = info.getSubtype();
            switch (sub) {

            case TelephonyManager.NETWORK_TYPE_GPRS:
            case TelephonyManager.NETWORK_TYPE_EDGE:
            case TelephonyManager.NETWORK_TYPE_CDMA:// 電信的2G
            case TelephonyManager.NETWORK_TYPE_1xRTT:
            case TelephonyManager.NETWORK_TYPE_IDEN:
                // 以上的都是2G網絡
                return "2G";

            case TelephonyManager.NETWORK_TYPE_UMTS:
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
            case TelephonyManager.NETWORK_TYPE_HSDPA:
            case TelephonyManager.NETWORK_TYPE_HSUPA:
            case TelephonyManager.NETWORK_TYPE_HSPA:
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
            case TelephonyManager.NETWORK_TYPE_EHRPD:
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                // 以上的都是3G網絡
                return "3G";

            case TelephonyManager.NETWORK_TYPE_LTE:

                return "4G";

            case TelephonyManager.NETWORK_TYPE_UNKNOWN:

                return "unknown";

            default:
                return "unknown";
            }
        }
        return "unknown";
    }

    /**
     * 獲取MAC地址
     * 
     * @param context
     *            Context對象
     * @return 設備的Mac地址
     */
    public static String getMacAddress(Context context) {
        String macAddress = "";
        try {
            WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            WifiInfo info = wifiMgr.getConnectionInfo();
            macAddress = info.getMacAddress();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return macAddress;
    }
}
public class ScreenUtil {

    /**
     * 獲取屏幕密度
     * 
     * @param context
     *            Context對象
     * @return 密度值
     */
    public static float getDensity(Context context) {
        try {
            DisplayMetrics dm = new DisplayMetrics();
            dm = context.getResources().getDisplayMetrics();
            float density = dm.density;
            return density;
        } catch (Throwable e) {
            e.printStackTrace();
            return 1.0f;
        }
    }

    /**
     * 獲取屏幕的寬度(單位:像素)
     * 
     * @param context
     *            Context對象
     * @return 寬度值
     */
    public static int getScreenWidth(Context context) {
        try {
            DisplayMetrics dm = new DisplayMetrics();
            dm = context.getResources().getDisplayMetrics();
            int screenWidth = dm.widthPixels;
            return screenWidth;
        } catch (Throwable e) {
            e.printStackTrace();
            return 0;
        }
    }

    /**
     * 獲取屏幕的高度(單位:像素)
     * 
     * @param context
     *            Context對象
     * @return 高度值
     */
    public static int getScreenHeight(Context context) {
        try {
            DisplayMetrics dm = new DisplayMetrics();
            dm = context.getResources().getDisplayMetrics();
            int screenHeight = dm.heightPixels;
            return screenHeight;
        } catch (Throwable e) {
            e.printStackTrace();
            return 0;
        }
    }

    /**
     * 獲取屏幕分辨率
     * 
     * @param context
     *            Context對象
     * @return 分辨率
     */
    public static String getScreenSize(Context context) {

        return getScreenHeight(context) + "*" + getScreenWidth(context);
    }

    /**
     * dp轉像素(px)
     * 
     * @param context
     *            Context對象
     * @param dp
     *            dp值
     * @return px值
     */
    public static float dpToPx(Context context, float dp) {
        if (context == null) {
            return -1;
        }
        return dp * context.getResources().getDisplayMetrics().density;
    }

    /**
     * 像素(px)轉dp
     * 
     * @param context
     *            Context對象
     * @param px
     *            px值
     * @return dp值
     */
    public static float pxToDp(Context context, float px) {
        if (context == null) {
            return -1;
        }
        return px / context.getResources().getDisplayMetrics().density;
    }

    public static int dpToPxInt(Context context, float dp) {
        return (int) (dpToPx(context, dp) + 0.5f);
    }

    public static int pxToDpCeilInt(Context context, float px) {
        return (int) (pxToDp(context, px) + 0.5f);
    }
}
/**
     * 獲取運營商
     * 
     * @param context
     *            Context對象
     * @return 運營商編識別碼
     */
    public static String getProvidersName(Context context) {
        String providerName = "";
        try {
            TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            String IMSI = telephonyManager.getSubscriberId();
            // IMSI號前面3位460是國家,緊接着後面2位 00 02是中國移動,01是中國聯通,03是中國電信。
            if (TextUtils.isEmpty(IMSI))
                return providerName;
            if (IMSI.startsWith("46000"))
                // 中國移動
                providerName = "46000";
            else if (IMSI.startsWith("46002")) {
                // 中國移動
                providerName = "46002";
            } else if (IMSI.startsWith("46001"))
                // 中國聯通
                providerName = "46001";
            else if (IMSI.startsWith("46003"))
                // 中國電信
                providerName = "46003";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return providerName;
    }

    /**
     * 獲取手機號
     * 
     * @param context
     *            Context對象
     * @return 手機號
     */
    public static String getPhoneNumber(Context context) {
        String number = "";
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        number = tm.getLine1Number();
        return number == null ? "" : number.replace("+86", "");
    }

    /**
     * 獲取SIM卡的ISO國家碼
     * 
     * @param context
     *            Context對象
     * @return ISO國家碼
     */
    public static String getCountry(Context context) {
        String number = "";
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        number = tm.getSimCountryIso();
        return number;
    }
相關文章
相關標籤/搜索