Android 开发中的一些小技巧详解手机开发
2023-06-13 09:20:07 时间
public int convertDipOrPx(int dip) { float scale = MarketApplication.getMarketApplicationContext() .getResources().getDisplayMetrics().density; return (int) (dip * scale + 0.5f * (dip = 0 ? 1 : -1)); }获取当前窗体,并添加自定义view:
getWindowManager() .addView( overlay, new WindowManager.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT));自定义fastScrollBar图片样式:
try { Field f = AbsListView.class.getDeclaredField("mFastScroller"); f.setAccessible(true); Object o = f.get(listView); f = f.getType().getDeclaredField("mThumbDrawable"); f.setAccessible(true); Drawable drawable = (Drawable) f.get(o); drawable = getResources().getDrawable(R.drawable.ic_launcher); f.set(o, drawable); Toast.makeText(this, f.getType().getName(), 1000).show(); } catch (Exception e) { throw new RuntimeException(e); }=网络================================== 判断网络是否可用:
/** * 网络是否可用 * @param context * @return public static boolean isNetworkAvailable(Context context) { ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] info = mgr.getAllNetworkInfo(); if (info != null) { for (int i = 0; i info.length; i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; return false; }
方法二:
/* * 判断网络连接是否已开 2012-08-20true 已打开 false 未打开 public static boolean isConn(Context context) { boolean bisConnFlag = false; ConnectivityManager conManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo network = conManager.getActiveNetworkInfo(); if (network != null) { bisConnFlag = conManager.getActiveNetworkInfo().isAvailable(); return bisConnFlag; }判断是不是Wifi连接:
public static boolean isWifiActive(Context icontext) { Context context = icontext.getApplicationContext(); ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] info; if (connectivity != null) { info = connectivity.getAllNetworkInfo(); if (info != null) { for (int i = 0; i info.length; i++) { if (info[i].getTypeName().equals("WIFI") info[i].isConnected()) { return true; return false; }判断当前网络类型
/** * 网络方式检查 private static int netCheck(Context context) { ConnectivityManager conMan = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) .getState(); State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI) .getState(); if (wifi.equals(State.CONNECTED)) { return DO_WIFI; } else if (mobile.equals(State.CONNECTED)) { return DO_3G; } else { return NO_CONNECTION; }获取下载文件的真实名字
public String getReallyFileName(String url) { StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() // 这里可以替换为detectAll() // 就包括了磁盘读写和网络I/O .penaltyLog() // 打印logcat,当然也可以定位到dropbox,通过文件保存相应的log .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() // 探测SQLite数据库操作 .penaltyLog() // 打印logcat .penaltyDeath().build()); String filename = ""; URL myURL; HttpURLConnection conn = null; if (url == null || url.length() 1) { return null; try { myURL = new URL(url); conn = (HttpURLConnection) myURL.openConnection(); conn.connect(); conn.getResponseCode(); URL absUrl = conn.getURL();// 获得真实Url // 打印输出服务器Header信息 // Map String, List String map = conn.getHeaderFields(); // for (String str : map.keySet()) { // if (str != null) { // Log.e("H3c", str + map.get(str)); // } // } filename = conn.getHeaderField("Content-Disposition");// 通过Content-Disposition获取文件名,这点跟服务器有关,需要灵活变通 if (filename == null || filename.length() 1) { filename = URLDecoder.decode(absUrl.getFile(), "UTF-8"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); conn = null; return filename; }=图片========================== bitmap转Byte数组(微信分享就需要用到)
public byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) { ByteArrayOutputStream output = new ByteArrayOutputStream(); bmp.compress(CompressFormat.PNG, 100, output); if (needRecycle) { bmp.recycle(); byte[] result = output.toByteArray(); try { output.close(); } catch (Exception e) { e.printStackTrace(); return result; }
Resources转Bitmap
public Bitmap loadBitmap(Resources res, int id) { BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; InputStream is = res.openRawResource(id);// 获取资源图片 return BitmapFactory.decodeStream(is, null, opt); }
保存图片到SD卡
public void saveBitmapToFile(String url, String filePath) { File iconFile = new File(filePath); if (!iconFile.getParentFile().exists()) { iconFile.getParentFile().mkdirs(); if (iconFile.exists() iconFile.length() 0) { return; FileOutputStream fos = null; InputStream is = null; try { fos = new FileOutputStream(filePath); is = new URL(url).openStream(); int data = is.read(); while (data != -1) { fos.write(data); data = is.read(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (is != null) { is.close(); if (fos != null) { fos.close(); } catch (IOException e) { e.printStackTrace(); }=系统============================== 根据包名打开一个应用程序
public boolean openApp(String packageName) { PackageInfo pi = null; try { pi = mPM.getPackageInfo(packageName, 0); } catch (NameNotFoundException e) { e.printStackTrace(); return false; if (pi == null) { return false; Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(pi.packageName); List ResolveInfo apps = mPM.queryIntentActivities(resolveIntent, 0); ResolveInfo ri = null; try { ri = apps.iterator().next(); } catch (Exception e) { return true; if (ri != null) { String tmpPackageName = ri.activityInfo.packageName; String className = ri.activityInfo.name; Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName(tmpPackageName, className); intent.setComponent(cn); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); MarketApplication.getMarketApplicationContext().startActivity( intent); } else { return false; return true; }判断是否APK是否安装过
public 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) { return false; } catch (NullPointerException e) { return false; }安装APK
public void installApk(Context context, String strFileAllName) { File file = new File(strFileAllName); Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(Intent.ACTION_VIEW); String type = "application/vnd.android.package-archive"; intent.setDataAndType(Uri.fromFile(file), type); context.startActivity(intent); }卸载APK
public void UninstallApk(Context context, String strPackageName) { Uri packageURI = Uri.parse("package:" + strPackageName); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); context.startActivity(uninstallIntent); }判断SD卡是否可用
public boolean CheckSD() { if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)) { return true; } else { return false; }创建快捷方式:
public void createShortCut(Context contxt) { // if (isInstallShortcut()) {// 如果已经创建了一次就不会再创建了 // return; // } Intent sIntent = new Intent(Intent.ACTION_MAIN); sIntent.addCategory(Intent.CATEGORY_LAUNCHER);// 加入action,和category之后,程序卸载的时候才会主动将该快捷方式也卸载 sIntent.setClass(contxt, Login.class); Intent installer = new Intent(); installer.putExtra("duplicate", false); installer.putExtra("android.intent.extra.shortcut.INTENT", sIntent); installer.putExtra("android.intent.extra.shortcut.NAME", "名字"); installer.putExtra("android.intent.extra.shortcut.ICON_RESOURCE", Intent.ShortcutIconResource .fromContext(contxt, R.drawable.icon)); installer.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); contxt.sendBroadcast(installer); }判断快捷方式是否创建:
private boolean isInstallShortcut() { boolean isInstallShortcut = false; final ContentResolver cr = MarketApplication .getMarketApplicationContext().getContentResolver(); String AUTHORITY = "com.android.launcher.settings"; Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); Cursor c = cr.query(CONTENT_URI, new String[] { "title", "iconResource" }, "title=?", new String[] { "名字" }, null); if (c != null c.getCount() 0) { isInstallShortcut = true; if (c != null) { c.close(); if (isInstallShortcut) { return isInstallShortcut; AUTHORITY = "com.android.launcher2.settings"; CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); c = cr.query(CONTENT_URI, new String[] { "title", "iconResource" }, "title=?", new String[] { "名字" }, null); if (c != null c.getCount() 0) { isInstallShortcut = true; if (c != null) { c.close(); AUTHORITY = "com.baidu.launcher"; CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true"); c = cr.query(CONTENT_URI, new String[] { "title", "iconResource" }, "title=?", new String[] { "名字" }, null); if (c != null c.getCount() 0) { isInstallShortcut = true; if (c != null) { c.close(); return isInstallShortcut; }过滤特殊字符:
private String StringFilter(String str) throws PatternSyntaxException { // 只允许字母和数字 // String regEx = "[^a-zA-Z0-9]"; // 清除掉所有特殊字符 String regEx = "[`~!@#$%^ *()+=|{}:;,//[//]. /?~!@#¥%…… *()——+|{}【】‘;:”“’。,、?]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); return m.replaceAll("").trim(); }执行shell语句:
public int execRootCmdSilent(String cmd) { int result = -1; DataOutputStream dos = null; try { Process p = Runtime.getRuntime().exec("su"); dos = new DataOutputStream(p.getOutputStream()); dos.writeBytes(cmd + "/n"); dos.flush(); dos.writeBytes("exit/n"); dos.flush(); p.waitFor(); result = p.exitValue(); } catch (Exception e) { e.printStackTrace(); } finally { if (dos != null) { try { dos.close(); } catch (IOException e) { e.printStackTrace(); return result; }获得文件MD5值:
public String getFileMD5(File file) { if (!file.isFile()) { return null; MessageDigest digest = null; FileInputStream in = null; byte buffer[] = new byte[1024]; int len; try { digest = MessageDigest.getInstance("MD5"); in = new FileInputStream(file); while ((len = in.read(buffer, 0, 1024)) != -1) { digest.update(buffer, 0, len); } catch (Exception e) { e.printStackTrace(); return null; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); BigInteger bigInt = new BigInteger(1, digest.digest()); return bigInt.toString(16); }
转自:http://blog.csdn.net/h3c4lenovo/article/details/16879435
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/3273.html
服务器部署程序员系统优化网站设置运维相关文章
- android sdk manager安装,Android SDK Manager安装过程
- robotium android,Robotium 测试Android apk安装包
- android toast 自定义时间,Android 自定义 Toast 显示时间「建议收藏」
- mitmproxy 抓包神器-2.抓取Android 和 iOS 手机 https 请求
- Android ConstraintLayout约束布局的居中详解手机开发
- Android实现ProgressBar旋转菊花加载的动画详解手机开发
- Android Activity的launchMode四种启动模式备忘详解手机开发
- Android ViewPager Fragment使用懒加载提升性能详解手机开发
- 社区(OkCommunity)Android 通讯app开发简介详解手机开发
- 谈谈 23 种设计模式在 Android 项目中的应用详解手机开发
- Android View转换成图片保存详解手机开发
- Android照片墙的实现详解手机开发
- Android自定义悬浮按钮效果实现,带移动效果详解手机开发
- Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局详解手机开发
- [android] 用fragment创建一个选项卡详解手机开发
- [android] 手机卫士手势滑动切换屏幕详解手机开发
- [android] 显示意图激活另外一个activity详解手机开发
- [android] sharedPreference入门详解手机开发
- [android] 相对布局和单位简介详解手机开发
- android最新更新方法详解手机开发
- android galley实现画廊效果详解手机开发
- android viewgroup事件分发机制详解手机开发
- android 实现淘宝收益图的折线详解手机开发
- android classloader双亲委托模式详解手机开发
- Android OnLowMemory和OnTrimMemory详解手机开发
- android JNI调用机制详解手机开发
- Android设置透明效果的三种方法详解手机开发
- Android的三种主流资源尺寸详解手机开发
- android广播接收器详解手机开发