1. 程式人生 > >一些自己整理實用程式碼

一些自己整理實用程式碼

開發中會用到一些測試程式碼,或者一些輔助用的程式碼,我把自己用到的整理在下面。

// TODO: 2017/4/25 測試使用,用完即刪。測試螢幕解析度
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels;  // 螢幕寬度(畫素)
int height = metric.heightPixels;  // 螢幕高度(畫素)
float density = metric.density;  // 螢幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 螢幕密度DPI(120 / 160 / 240) Log.e("xnm", "width = " + width + ", height = " + height); Log.e("xnm", "density = " + density + ", densityDpi = " + densityDpi);

新接手一個專案不知道介面在哪個類裡。 檢視當前Activity :adb shell "dumpsys window w | grep name="

硬編碼是很差的習慣,如何找到整個專案中的硬編碼。 ^((?!(\*|//)).)+[\u4e00-\u9fa5]

開啟全域性搜尋,還要把搜尋框的Regular Expression 打勾選中。

網路請求的時候,判斷網路狀態的程式碼。

A 判斷是否有網路:

public static boolean isNetworkAvailable(Context context) {
   ConnectivityManager connectivity = (ConnectivityManager)
               context.getSystemService(Context.CONNECTIVITY_SERVICE);
   if (connectivity == null) {
      Log.d
(TAG, "couldn't get connectivity manager"); } else { NetworkInfo info = connectivity.getActiveNetworkInfo(); if (info != null) { if (info.getState() == NetworkInfo.State.CONNECTED) { Log.d(TAG, "network is available"); return true; } } } Log.d(TAG, "network is not available"); return false; }


B 判斷是否有wifi:

public static boolean checkWifiConnected(Context context) {
    boolean connected = false;
    try {
        ConnectivityManager connectivityManager = (ConnectivityManager) 
                context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (wifiNetInfo != null) {
            connected = (wifiNetInfo.getState() == NetworkInfo.State.CONNECTED);
}
    } catch (Exception ignored) {
    }

    return connected;
}

C 如果判斷當前是行動網路,只需要先判斷是否有網路,再判斷是否為wifi即可。這裡就不舉例了。

最近又碰到了一個需求,獲取使用者安裝在手機中的軟體。(這裡友情提醒一句,如果是上架谷歌商店的,如果專案經理/產品經理/老闆,讓你加這個功能。

請和他們說,一旦上了這個功能,我們的產品就會被谷歌下架,估計只要是個正常人就不會讓你繼續加了)

下面直接上程式碼,很簡單,複製下面程式碼,呼叫這個方法就可以了。

public static String scanLocalInstallAppList(Context context) {
    PackageManager packageManager = context.getPackageManager();
JSONArray ja = new JSONArray();
    try {
        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
        for (PackageInfo packageInfo : packageInfos) {

            //暫時過濾系統應用
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0 ||
                    (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
                continue;
}

            ja.put(packageInfo.applicationInfo.loadLabel(packageManager).toString());
}
    } catch (Exception e) {
    }

    if (ja.length() > 0) {
        return ja.toString();
}
    return "";
}

設定頁面常量。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);