Android开发中一些工具类汇总

  • 超链接URL中获取查询Query的某个key的value


    相关知识:

http://rap.sunmi.com/repository/editor?id=119&mod=433
URL的组成:
protocol:(ftp, http, nntp, … etc.) ; 对应上面:http
host:主机名 ; 对应上面:rap.sunmi.com
port:端口 ;对应上面 80,http默认端口 也就是上面URL可以写成 http://rap.sunmi.com:80/repository/editor?id=119&mod=433
path:路径 ;对应上面:/repository/editor
query:查询字符串 ;对应上面:id=119&mod=433

//获取query中某个key的value
UrlQuerySanitizer sanitizer = new UrlQuerySanitizer();
sanitizer.setAllowUnregisteredParamaters(true);
sanitizer.parseUrl("http://rap.sunmi.com/repository/editor?id=119&mod=433");
invoiceRedRequest.setOrderSn(sanitizer.getValue("id"));
  • 打印log到控制台LogUtils


    功能描述:

输出各种级别的log到控制台:
msg字符长度不受限制,默认的Log是受限制的,超过的部分不输出
输出的log头有链接,可以点击链接到执行代码文件位置
可以直接输出msg,使用默认Tag
支持设置 LEVEL,小于LEVEL级别以下不再打印log

 /**
  * 输出各种级别的log到控制台
  * msg字符长度不受限制,默认的Log是受限制的,超过的部分不输出
  * 输出的log头有链接,可以点击链接到执行代码文件位置
  * 可以直接输出msg,使用默认Tag
  * 支持设置 LEVEL,小于LEVEL级别以下不再打印log */
public class LogUtils {
    private static final String TAG = "LogUtil";
    public static int LEVEL = Log.VERBOSE;
    public static void v(String TAG, String msg) {
        if (LEVEL <= Log.VERBOSE) {
            logWithLink(Log.VERBOSE, TAG, msg);
        }
    }
    public static void d(String TAG, String msg) {
        if (LEVEL <= Log.DEBUG) {
            logWithLink(Log.DEBUG, TAG, msg);
        }
    }
    public static void i(String TAG, String msg) {
        if (LEVEL <= Log.INFO) {
            logWithLink(Log.INFO, TAG, msg);
        }
    }
    public static void w(String TAG, String msg) {
        if (LEVEL <= Log.WARN) {
            logWithLink(Log.WARN, TAG, msg);
        }
    }
    public static void e(String TAG, String msg) {
        if (LEVEL <= Log.ERROR) {
            logWithLink(Log.ERROR, TAG, msg);
        }
    }
    public static void v(String msg) {
        if (LEVEL <= Log.VERBOSE) {
            logWithLink(Log.VERBOSE, TAG, msg);
        }
    }
    public static void d(String msg) {
        if (LEVEL <= Log.DEBUG) {
            logWithLink(Log.DEBUG, TAG, msg);
        }
    }
    public static void i(String msg) {
        if (LEVEL <= Log.INFO) {
            logWithLink(Log.INFO, TAG, msg);
        }
    }
    public static void w(String msg) {
        if (LEVEL <= Log.WARN) {
            logWithLink(Log.WARN, TAG, msg);
        }
    }
    public static void e(String msg) {
        if (LEVEL <= Log.ERROR) {
            logWithLink(Log.ERROR, TAG, msg);
        }
    }
    //Log输出的最大长度
    private static int LOG_MAX_LENGTH = 2000;//2000
    /**
     * 循环打印log,解决msg过长不打印问题
     */
    private static void LogWrapperLoop(int logPriority, String TAG, String msg) {
        int msgLength = msg.length();
        /**
         * adb  lgh=3
         *  ^
         *  |   index=1
         * print a
         */
        int index = 0;//输出字符的位置
        while (index < msgLength) {
            if (index + LOG_MAX_LENGTH > msgLength) {
                LogWrapper(logPriority, TAG, msg.substring(index, msgLength));
            } else {
                LogWrapper(logPriority, TAG, msg.substring(index, index + LOG_MAX_LENGTH));
            }
            index += LOG_MAX_LENGTH;
        }
    }
    private static void LogWrapper(int logPriority, String TAG, String msg) {
        switch (logPriority) {
            case Log.VERBOSE:
                Log.v(TAG, msg);
                break;
            case Log.DEBUG:
                Log.d(TAG, msg);
                break;
            case Log.INFO:
                Log.i(TAG, msg);
                break;
            case Log.WARN:
                Log.w(TAG, msg);
                break;
            case Log.ERROR:
                Log.e(TAG, msg);
                break;
            case Log.ASSERT:
                break;
            default:
                break;
        }
    }
    /**
     * 带有链接的log打印
     */
    private static void logWithLink(int logPriority, String TAG, String msg) {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        int index = 4;
        String className = stackTrace[index].getFileName();
        String methodName = stackTrace[index].getMethodName();
        int lineNumber = stackTrace[index].getLineNumber();
        methodName = methodName.substring(0, 1).toUpperCase() + methodName.substring(1);
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("[ (").append(className).append(":").append(lineNumber).append(")#").append(methodName).append(" ] ");
        stringBuilder.append(msg);
        String logStr = stringBuilder.toString();
        LogWrapperLoop(logPriority, TAG, logStr);
    }
}

此文要是对你有帮助,如果方便麻烦点个赞,谢谢!!!

猜你喜欢

转载自blog.csdn.net/kingyc123456789/article/details/107223681