CrashHandler.smali
.class public Lcom/quickbird/mini/utils/CrashHandler;
.super Ljava/lang/Object;
.source "CrashHandler.java"
# interfaces
.implements Ljava/lang/Thread$UncaughtExceptionHandler;
# static fields
.field private static final INSTANCE:Lcom/quickbird/mini/utils/CrashHandler;
# instance fields
.field private mContext:Landroid/content/Context;
.field private mDefaultHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 38
new-instance v0, Lcom/quickbird/mini/utils/CrashHandler;
invoke-direct {v0}, Lcom/quickbird/mini/utils/CrashHandler;-><init>()V
sput-object v0, Lcom/quickbird/mini/utils/CrashHandler;->INSTANCE:Lcom/quickbird/mini/utils/CrashHandler;
return-void
.end method
.method private constructor <init>()V
.registers 1
.prologue
.line 43
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 45
return-void
.end method
.method public static getInstance()Lcom/quickbird/mini/utils/CrashHandler;
.registers 1
.prologue
.line 51
sget-object v0, Lcom/quickbird/mini/utils/CrashHandler;->INSTANCE:Lcom/quickbird/mini/utils/CrashHandler;
return-object v0
.end method
.method private handleException(Ljava/lang/Throwable;)Z
.registers 10
.prologue
const/4 v3, 0x0
.line 110
if-nez p1, :cond_4
.line 155
:goto_3
return v3
.line 114
:cond_4
const-string v2, ""
.line 116
const-string v1, ""
.line 117
const-string v0, ""
.line 119
invoke-virtual {p1}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement;
move-result-object v5
.line 121
if-eqz v5, :cond_73
array-length v4, v5
if-lez v4, :cond_73
.line 122
aget-object v0, v5, v3
invoke-virtual {v0}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String;
move-result-object v4
.line 123
aget-object v0, v5, v3
invoke-virtual {v0}, Ljava/lang/StackTraceElement;->getClassName()Ljava/lang/String;
move-result-object v1
.line 124
aget-object v0, v5, v3
invoke-virtual {v0}, Ljava/lang/StackTraceElement;->getLineNumber()I
move-result v2
.line 125
aget-object v0, v5, v3
invoke-virtual {v0}, Ljava/lang/StackTraceElement;->getMethodName()Ljava/lang/String;
move-result-object v0
.line 128
:goto_2b
invoke-virtual {p1}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;
move-result-object v5
.line 130
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, "FileName:"
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v6
invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
const-string v6, "\tClassName:"
invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v4, "\tMethodName:"
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "\tLineNumber:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "\tMessage:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 137
new-instance v1, Lcom/quickbird/mini/utils/CrashHandler$1;
invoke-direct {v1, p0, v0}, Lcom/quickbird/mini/utils/CrashHandler$1;-><init>(Lcom/quickbird/mini/utils/CrashHandler;Ljava/lang/String;)V
invoke-virtual {v1}, Lcom/quickbird/mini/utils/CrashHandler$1;->start()V
goto :goto_3
:cond_73
move-object v4, v2
move v2, v3
goto :goto_2b
.end method
# virtual methods
.method public appenToFile(Ljava/lang/String;Ljava/lang/String;)V
.registers 8
.prologue
.line 181
const/4 v2, 0x0
.line 183
:try_start_1
new-instance v1, Ljava/io/FileWriter;
const/4 v0, 0x1
invoke-direct {v1, p2, v0}, Ljava/io/FileWriter;-><init>(Ljava/lang/String;Z)V
:try_end_7
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_7} :catch_40
.catchall {:try_start_1 .. :try_end_7} :catchall_67
.line 184
:try_start_7
new-instance v0, Ljava/text/SimpleDateFormat;
const-string v2, "yyyy-MM-dd HH:mm:ss E"
invoke-direct {v0, v2}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V
.line 185
new-instance v2, Ljava/util/Date;
invoke-direct {v2}, Ljava/util/Date;-><init>()V
invoke-virtual {v0, v2}, Ljava/text/SimpleDateFormat;->format(Ljava/util/Date;)Ljava/lang/String;
move-result-object v0
.line 186
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, " : "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, "\r\n"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/io/FileWriter;->write(Ljava/lang/String;)V
:try_end_37
.catch Ljava/lang/Exception; {:try_start_7 .. :try_end_37} :catch_74
.catchall {:try_start_7 .. :try_end_37} :catchall_72
.line 191
:try_start_37
invoke-virtual {v1}, Ljava/io/FileWriter;->close()V
:try_end_3a
.catch Ljava/io/IOException; {:try_start_37 .. :try_end_3a} :catch_3b
.line 197
:goto_3a
return-void
.line 192
:catch_3b
move-exception v0
.line 194
invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
goto :goto_3a
.line 187
:catch_40
move-exception v0
move-object v1, v2
.line 188
:goto_42
:try_start_42
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "\u4e66\u5199\u65e5\u5fd7\u53d1\u751f\u9519\u8bef\uff1a"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
:try_end_5e
.catchall {:try_start_42 .. :try_end_5e} :catchall_72
.line 191
:try_start_5e
invoke-virtual {v1}, Ljava/io/FileWriter;->close()V
:try_end_61
.catch Ljava/io/IOException; {:try_start_5e .. :try_end_61} :catch_62
goto :goto_3a
.line 192
:catch_62
move-exception v0
.line 194
invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
goto :goto_3a
.line 190
:catchall_67
move-exception v0
move-object v1, v2
.line 191
:goto_69
:try_start_69
invoke-virtual {v1}, Ljava/io/FileWriter;->close()V
:try_end_6c
.catch Ljava/io/IOException; {:try_start_69 .. :try_end_6c} :catch_6d
.line 195
:goto_6c
throw v0
.line 192
:catch_6d
move-exception v1
.line 194
invoke-virtual {v1}, Ljava/io/IOException;->printStackTrace()V
goto :goto_6c
.line 190
:catchall_72
move-exception v0
goto :goto_69
.line 187
:catch_74
move-exception v0
goto :goto_42
.end method
.method public getFileName()Ljava/lang/String;
.registers 4
.prologue
.line 78
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
iget-object v1, p0, Lcom/quickbird/mini/utils/CrashHandler;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "sharedpreferences"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 79
iget-object v1, p0, Lcom/quickbird/mini/utils/CrashHandler;->mContext:Landroid/content/Context;
const/4 v2, 0x0
invoke-virtual {v1, v0, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
move-result-object v0
.line 80
const-string v1, "fileName"
const-string v2, "qb-crash.log"
invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 82
return-object v0
.end method
.method public getSDPath()Ljava/lang/String;
.registers 4
.prologue
.line 164
const/4 v0, 0x0
.line 165
invoke-static {}, Landroid/os/Environment;->getExternalStorageState()Ljava/lang/String;
move-result-object v1
const-string v2, "mounted"
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
.line 167
if-eqz v1, :cond_11
.line 168
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
move-result-object v0
.line 170
:cond_11
invoke-virtual {v0}, Ljava/io/File;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public init(Landroid/content/Context;)V
.registers 3
.prologue
.line 61
iput-object p1, p0, Lcom/quickbird/mini/utils/CrashHandler;->mContext:Landroid/content/Context;
.line 62
invoke-static {}, Ljava/lang/Thread;->getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;
move-result-object v0
iput-object v0, p0, Lcom/quickbird/mini/utils/CrashHandler;->mDefaultHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
.line 63
invoke-static {p0}, Ljava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V
.line 64
return-void
.end method
.method public setFileName(Ljava/lang/String;)V
.registers 5
.prologue
.line 68
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
iget-object v1, p0, Lcom/quickbird/mini/utils/CrashHandler;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "sharedpreferences"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 69
iget-object v1, p0, Lcom/quickbird/mini/utils/CrashHandler;->mContext:Landroid/content/Context;
const/4 v2, 0x0
invoke-virtual {v1, v0, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
move-result-object v0
.line 70
invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
move-result-object v0
.line 71
const-string v1, "fileName"
invoke-interface {v0, v1, p1}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
.line 72
invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z
.line 74
return-void
.end method
.method public uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V
.registers 5
.prologue
.line 89
invoke-direct {p0, p2}, Lcom/quickbird/mini/utils/CrashHandler;->handleException(Ljava/lang/Throwable;)Z
move-result v0
if-nez v0, :cond_10
iget-object v0, p0, Lcom/quickbird/mini/utils/CrashHandler;->mDefaultHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
if-eqz v0, :cond_10
.line 91
iget-object v0, p0, Lcom/quickbird/mini/utils/CrashHandler;->mDefaultHandler:Ljava/lang/Thread$UncaughtExceptionHandler;
invoke-interface {v0, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V
.line 100
:goto_f
return-void
.line 94
:cond_10
const-wide/16 v0, 0xbb8
:try_start_12
invoke-static {v0, v1}, Ljava/lang/Thread;->sleep(J)V
:try_end_15
.catch Ljava/lang/InterruptedException; {:try_start_12 .. :try_end_15} :catch_22
.line 97
:goto_15
invoke-static {}, Landroid/os/Process;->myPid()I
move-result v0
invoke-static {v0}, Landroid/os/Process;->killProcess(I)V
.line 98
const/16 v0, 0xa
invoke-static {v0}, Ljava/lang/System;->exit(I)V
goto :goto_f
.line 95
:catch_22
move-exception v0
goto :goto_15
.end method