一:
/**
*得到Exception所在代码的行数
*如果没有行信息,返回-1
*/
public static int getLineNumber(Exception e){
StackTraceElement[] trace =e.getStackTrace();
if(trace==null||trace.length==0) return -1; //
return trace[0].getLineNumber();
}
public static String getLineNumber(Exception e){
StackTraceElement[] trace =e.getStackTrace();
if(trace==null||trace.length==0) return "-1"; //
Integer integer =trace[0].getLineNumber();
return "LINE:"+integer + " 0X"+integer.toString(16);
}
//使用例子:
System.out.println(“Current line:”+getLineNumber(new Exception()));
二:.在代码中使用编译时间 BuildConfig.BUILD_TIMESTAMP
//文件 app中的 build.gradle
//配置
defaultConfig {
...
buildConfigField "String", "BUILD_TIMESTAMP", getDate()
}
//函数
String getDate() {
Date date = new Date();
SimpleDateFormat bjdata = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 北京
bjdata.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置北京时区
String str = "\""+"编译时间 毫秒数:" + date.getTime() + ", 北京时间:" + bjdata.format(date)+"\"";
return str;
}
//代码
TextView textView = findViewById(R.id.compileData);
textView.setText(BuildConfig.BUILD_TIMESTAMP);
//xml
<TextView
android:id="@+id/compileData"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="编译时间"/>