一些自己整理實用程式碼
阿新 • • 發佈:2019-01-04
開發中會用到一些測試程式碼,或者一些輔助用的程式碼,我把自己用到的整理在下面。
// 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]
網路請求的時候,判斷網路狀態的程式碼。
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);