Android常用代码段
来源:互联网 发布:淘宝申请售后的时间 编辑:程序博客网 时间:2024/05/16 17:07
1、LogUtil.java
public class LogUtil { private static final boolean isVerbose = true; private static final boolean isDebug = true; private static final boolean isInformation = true; private static final boolean isWarning = true; private static final boolean isError = true; public static void v(String tag, String msg) { if (isVerbose) { android.util.Log.v(tag, msg); } } public static void v(String tag, String msg, Throwable t) { if (isVerbose) { android.util.Log.v(tag, msg, t); } } public static void d(String tag, String msg) { if (isDebug) { android.util.Log.d(tag, msg); } } public static void d(String tag, String msg, Throwable t) { if (isDebug) { android.util.Log.d(tag, msg, t); } } public static void i(String tag, String msg) { if (isInformation) { android.util.Log.i(tag, msg); } } public static void i(String tag, String msg, Throwable t) { if (isInformation) { android.util.Log.i(tag, msg, t); } } public static void w(String tag, String msg) { if (isWarning) { android.util.Log.w(tag, msg); } } public static void w(String tag, String msg, Throwable t) { if (isWarning) { android.util.Log.w(tag, msg, t); } } public static void e(String tag, String msg) { if (isError) { android.util.Log.e(tag, msg); } } public static void e(String tag, String msg, Throwable t) { if (isError) { android.util.Log.e(tag, msg, t); } }}
2、获取网络状态
import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo.State;/** * <pre> * 获取网络状态工具类 * NETWORN_NONE = 没有网络连接 * NETWORN_WIFI = wifi连接 * NETWORN_MOBILE = 2g/3g/4g网连接 * </pre> */public class NetworkStateUtils { public static final int NETWORN_NONE = 0; public static final int NETWORN_WIFI = 1; public static final int NETWORN_MOBILE = 2; public static int getNetworkState(Context context){ ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //Wifi State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); if(state == State.CONNECTED||state == State.CONNECTING){ return NETWORN_WIFI; } //3G state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); if(state == State.CONNECTED||state == State.CONNECTING){ return NETWORN_MOBILE; } return NETWORN_NONE; }}
3、Popwindow点击外部消失
from:http://www.eoeandroid.com/thread-98703-1-1.html首先要给popwindow设置背景图片为透明,然后让它点击外面触发这个事件为truemPopupWindow.setBackgroundDrawable(getDrawable());mPopupWindow.setOutsideTouchable(true);/** * 生成一个 透明的背景图片 * @return */private Drawable getDrawable(){ ShapeDrawable bgdrawable =new ShapeDrawable(new OvalShape()); bgdrawable.getPaint().setColor(cxt.getResources().getColor(android.R.color.transparent)); return bgdrawable;}这样点击popwindow之外的话就会让它消失,测试已通过。
4、byte数组和16进制字符串转换
public static final String byteArray2HexString(byte[] byteArray) { StringBuilder builder = new StringBuilder(); for (int i = 0, len = byteArray.length; i < len; i++) { builder.append(String.format("%02X", byteArray[i])); } return builder.toString();}public static final byte[] hexString2ByteArray(String hexString) { int strLength = hexString.length(); byte[] result = new byte[strLength / 2]; for (int i = 0, len = strLength / 2; i < len; i++) { result[i] = (byte) Integer.parseInt(hexString.substring(i * 2, i * 2 + 2), 16); } return result;}
5、获取当前apk的签名文件md5值
public static String getApkSignMD5(Context context) throws Exception { PackageInfo packageInfo = context.getPackageManager().getPackageInfo( context.getPackageName(), PackageManager.GET_SIGNATURES); MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.update(packageInfo.signatures[0].toByteArray()); return byteArray2HexString(md5.digest());}public static String byteArray2HexString(byte[] byteArray) { StringBuilder builder = new StringBuilder(); for (int i = 0, len = byteArray.length; i < len; i++) { builder.append(String.format("%02X", byteArray[i])); } return builder.toString();}
6、获取任意apk文件的签名信息
//from:http://www.cnblogs.com/tt_mc/archive/2012/05/16/2503583.htmlprivate String showUninstallAPKSignatures(String apkPath) { String PATH_PackageParser = "android.content.pm.PackageParser"; try { // apk包的文件路径 // 这是一个Package 解释器, 是隐藏的 // 构造函数的参数只有一个, apk文件的路径 // PackageParser packageParser = new PackageParser(apkPath); Class pkgParserCls = Class.forName(PATH_PackageParser); Class[] typeArgs = new Class[1]; typeArgs[0] = String.class; Constructor pkgParserCt = pkgParserCls.getConstructor(typeArgs); Object[] valueArgs = new Object[1]; valueArgs[0] = apkPath; Object pkgParser = pkgParserCt.newInstance(valueArgs); MediaApplication.logD(DownloadApk.class, "pkgParser:" + pkgParser.toString()); // 这个是与显示有关的, 里面涉及到一些像素显示等等, 我们使用默认的情况 DisplayMetrics metrics = new DisplayMetrics(); metrics.setToDefaults(); // PackageParser.Package mPkgInfo = packageParser.parsePackage(new // File(apkPath), apkPath, // metrics, 0); typeArgs = new Class[4]; typeArgs[0] = File.class; typeArgs[1] = String.class; typeArgs[2] = DisplayMetrics.class; typeArgs[3] = Integer.TYPE; Method pkgParser_parsePackageMtd = pkgParserCls.getDeclaredMethod("parsePackage", typeArgs); valueArgs = new Object[4]; valueArgs[0] = new File(apkPath); valueArgs[1] = apkPath; valueArgs[2] = metrics; valueArgs[3] = PackageManager.GET_SIGNATURES; Object pkgParserPkg = pkgParser_parsePackageMtd.invoke(pkgParser, valueArgs); typeArgs = new Class[2]; typeArgs[0] = pkgParserPkg.getClass(); typeArgs[1] = Integer.TYPE; Method pkgParser_collectCertificatesMtd = pkgParserCls.getDeclaredMethod("collectCertificates", typeArgs); valueArgs = new Object[2]; valueArgs[0] = pkgParserPkg; valueArgs[1] = PackageManager.GET_SIGNATURES; pkgParser_collectCertificatesMtd.invoke(pkgParser, valueArgs); // 应用程序信息包, 这个公开的, 不过有些函数, 变量没公开 Field packageInfoFld = pkgParserPkg.getClass().getDeclaredField("mSignatures"); Signature[] info = (Signature[]) packageInfoFld.get(pkgParserPkg); MediaApplication.logD(DownloadApk.class, "size:"+info.length); MediaApplication.logD(DownloadApk.class, info[0].toCharsString()); return info[0].toCharsString(); } catch (Exception e) { e.printStackTrace(); } return null;}
7、禁止view多点触控
if (android.os.Build.VERSION.SDK_INT >= 11) { // Enable or disable the splitting of MotionEvents to multiple children during touch event dispatch. // This behavior is enabled by default for applications that target an SDK version of Build.VERSION_CODES.HONEYCOMB or newer. setMotionEventSplittingEnabled(false);}
0 0
- Android常用代码段
- 常用android代码段
- Android常用代码段
- Android常用代码段
- 常用java代码段
- 常用ASP代码段
- VC常用代码段
- 常用代码段集锦
- javascript常用代码段
- Java常用代码段
- Extjs常用代码段
- VC++常用代码段
- 常用lua代码段
- SQLServer常用代码段
- JDBC常用代码段
- JavaScript常用代码段
- JavaScript常用代码段
- 常用JS代码段
- linux下网卡网络流量监控工具
- 文件加密之后下载时间变长
- 数组去重
- 【Android】获取Mac地址
- Using @ConfigurationProperties in Spring Boot
- Android常用代码段
- 冬吴相对论 以美启真
- [Android Studio 权威教程]AS添加第三方库的6种方式(Jar,module,so等)
- iOS小技巧
- jsp 的四个作用域 :page、request、session和application的区别
- ubuntu: 缺少 mcrypt 扩展,请检查 php 配置
- iOS QQ第三方登实现
- MongoDB JAVA API高级应用
- 面向对象三大基本特性,五大基本原则