CrashUtils$1.smali

.class final Lcom/blankj/utilcode/util/CrashUtils$1;
.super Ljava/lang/Object;
.source "CrashUtils.java"

# interfaces
.implements Ljava/lang/Thread$UncaughtExceptionHandler;


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/blankj/utilcode/util/CrashUtils;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x8
    name = null
.end annotation


# direct methods
.method static constructor <clinit>()V
    .registers 1

    return-void
.end method

.method constructor <init>()V
    .registers 1

    .line 67
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method


# virtual methods
.method public uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V
    .registers 10
    .param p1, "t"    # Ljava/lang/Thread;
    .param p2, "e"    # Ljava/lang/Throwable;

    .line 70
    if-nez p2, :cond_1d

    .line 71
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->DEFAULT_UNCAUGHT_EXCEPTION_HANDLER:Ljava/lang/Thread$UncaughtExceptionHandler;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$000()Ljava/lang/Thread$UncaughtExceptionHandler;

    move-result-object v0

    if-eqz v0, :cond_11

    .line 72
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->DEFAULT_UNCAUGHT_EXCEPTION_HANDLER:Ljava/lang/Thread$UncaughtExceptionHandler;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$000()Ljava/lang/Thread$UncaughtExceptionHandler;

    move-result-object v0

    const/4 v1, 0x0

    invoke-interface {v0, p1, v1}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V

    goto :goto_1c

    .line 74
    :cond_11
    invoke-static {}, Landroid/os/Process;->myPid()I

    move-result v0

    invoke-static {v0}, Landroid/os/Process;->killProcess(I)V

    .line 75
    const/4 v0, 0x1

    invoke-static {v0}, Ljava/lang/System;->exit(I)V

    .line 77
    :goto_1c
    return-void

    .line 80
    :cond_1d
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->FORMAT:Ljava/text/Format;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$100()Ljava/text/Format;

    move-result-object v0

    new-instance v1, Ljava/util/Date;

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v2

    invoke-direct {v1, v2, v3}, Ljava/util/Date;-><init>(J)V

    invoke-virtual {v0, v1}, Ljava/text/Format;->format(Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v0

    .line 81
    .local v0, "time":Ljava/lang/String;
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    .line 82
    .local v1, "sb":Ljava/lang/StringBuilder;
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "************* Log Head ****************\nTime Of Crash      : "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, "\nDevice Manufacturer: "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, "\nDevice Model       : "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    sget-object v3, Landroid/os/Build;->MODEL:Ljava/lang/String;

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, "\nAndroid Version    : "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    sget-object v3, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String;

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, "\nAndroid SDK        : "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    sget v3, Landroid/os/Build$VERSION;->SDK_INT:I

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v3, "\nApp VersionName    : "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 88
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->versionName:Ljava/lang/String;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$200()Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, "\nApp VersionCode    : "

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 89
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->versionCode:I
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$300()I

    move-result v3

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v3, "\n************* Log Head ****************\n\n"

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    .line 91
    .local v2, "head":Ljava/lang/String;
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 92
    invoke-static {p2}, Lcom/blankj/utilcode/util/ThrowableUtils;->getFullStackTrace(Ljava/lang/Throwable;)Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 93
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    .line 94
    .local v3, "crashInfo":Ljava/lang/String;
    new-instance v4, Ljava/lang/StringBuilder;

    invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V

    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->dir:Ljava/lang/String;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$400()Ljava/lang/String;

    move-result-object v5

    if-nez v5, :cond_a7

    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->defaultDir:Ljava/lang/String;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$500()Ljava/lang/String;

    move-result-object v5

    goto :goto_ab

    :cond_a7
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->dir:Ljava/lang/String;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$400()Ljava/lang/String;

    move-result-object v5

    :goto_ab
    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v5, ".txt"

    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    .line 95
    .local v4, "fullPath":Ljava/lang/String;
    # invokes: Lcom/blankj/utilcode/util/CrashUtils;->createOrExistsFile(Ljava/lang/String;)Z
    invoke-static {v4}, Lcom/blankj/utilcode/util/CrashUtils;->access$600(Ljava/lang/String;)Z

    move-result v5

    if-eqz v5, :cond_c4

    .line 96
    # invokes: Lcom/blankj/utilcode/util/CrashUtils;->input2File(Ljava/lang/String;Ljava/lang/String;)V
    invoke-static {v3, v4}, Lcom/blankj/utilcode/util/CrashUtils;->access$700(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_df

    .line 98
    :cond_c4
    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    const-string v6, "create "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v6, " failed!"

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    const-string v6, "CrashUtils"

    invoke-static {v6, v5}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 101
    :goto_df
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->sOnCrashListener:Lcom/blankj/utilcode/util/CrashUtils$OnCrashListener;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$800()Lcom/blankj/utilcode/util/CrashUtils$OnCrashListener;

    move-result-object v5

    if-eqz v5, :cond_ec

    .line 102
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->sOnCrashListener:Lcom/blankj/utilcode/util/CrashUtils$OnCrashListener;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$800()Lcom/blankj/utilcode/util/CrashUtils$OnCrashListener;

    move-result-object v5

    invoke-interface {v5, v3, p2}, Lcom/blankj/utilcode/util/CrashUtils$OnCrashListener;->onCrash(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 105
    :cond_ec
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->DEFAULT_UNCAUGHT_EXCEPTION_HANDLER:Ljava/lang/Thread$UncaughtExceptionHandler;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$000()Ljava/lang/Thread$UncaughtExceptionHandler;

    move-result-object v5

    if-eqz v5, :cond_f9

    .line 106
    # getter for: Lcom/blankj/utilcode/util/CrashUtils;->DEFAULT_UNCAUGHT_EXCEPTION_HANDLER:Ljava/lang/Thread$UncaughtExceptionHandler;
    invoke-static {}, Lcom/blankj/utilcode/util/CrashUtils;->access$000()Ljava/lang/Thread$UncaughtExceptionHandler;

    move-result-object v5

    invoke-interface {v5, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V

    .line 108
    :cond_f9
    return-void
.end method