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