获取当点的类/路径/包名
通过服务的方式打印Activity类名
主要用到的是下面的方法。
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
RunningTaskInfo info = manager.getRunningTasks(1).get(0);
String shortClassName = info.topActivity.getShortClassName(); //类名
String className = info.topActivity.getClassName(); //完整类名
String packageName = info.topActivity.getPackageName(); //包名
或者
//new 一个异常类
Exception exception = new Exception();
//调用者上级类名
Log.i(TAG, "Class0———>:" + exception.getStackTrace()[0].getClassName());
//调用者上级的上级类名
Log.i(TAG, "Class1———>:" + exception.getStackTrace()[1].getClassName());
//调用者上级的方法名
Log.i(TAG, "MethodName0———>:" + exception.getStackTrace()[0].getMethodName());
//调用者上级的上级方法名
Log.i(TAG, "MethodName1———>:" + exception.getStackTrace()[1].getMethodName());
//当前方法行号
Log.i(TAG, "line0———>:" + exception.getStackTrace()[0].getLineNumber());
//调用方法行号
Log.i(TAG, "line1———>:" + exception.getStackTrace()[1].getLineNumber());
我写的如下(TAG=123321):
public class LogUtils {
public static final String TAG="123321";
private static LogUtils utils;
//完整的类名
private static String class_name;
//完整的包名
private static String package_name;
public static LogUtils getInstance(){
if( context!=null) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = manager.getRunningTasks(1);
ActivityManager.RunningTaskInfo info = runningTasks.get(0);
ComponentName topActivity = info.topActivity;
class_name = topActivity.getClassName();
package_name=topActivity.getPackageName();
}else{
Log.e(TAG, "com.trump.live.util.LogUtils: getPath\t\t上下文不能为空。" );
}
return utils;
}
public static LogUtils printLog(String message){
if(class_name.isEmpty()||package_name.isEmpty()){
return null;
}else {
Log.i(TAG, "className-->"+class_name+"\n"+
"packageName-->"+package_name+"\n"+
"message-->"+message);
return utils;
}
// return null;
}
}