开发中会用到一些测试代码,或者一些辅助用的代码,我把自己用到的整理在下面。
// 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);