DaemonStrategyUnder21.smali
.class public Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;
.super Ljava/lang/Object;
.source "DaemonStrategyUnder21.java"
# interfaces
.implements Lcom/cleanmaster/daemon/nativeforlive/utils/IDaemonStrategy;
# instance fields
.field private final BINARY_DEST_DIR_NAME:Ljava/lang/String;
.field private final BINARY_FILE_NAME:Ljava/lang/String;
.field private mAlarmManager:Landroid/app/AlarmManager;
.field private mPendingIntent:Landroid/app/PendingIntent;
# direct methods
.method public constructor <init>()V
.registers 2
.prologue
.line 25
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 26
const-string v0, "bin"
iput-object v0, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->BINARY_DEST_DIR_NAME:Ljava/lang/String;
.line 27
const-string v0, "daemon"
iput-object v0, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->BINARY_FILE_NAME:Ljava/lang/String;
return-void
.end method
.method private copyAssets(Landroid/content/Context;Ljava/lang/String;Ljava/io/File;Ljava/lang/String;)V
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.prologue
.line 120
invoke-virtual {p1}, Landroid/content/Context;->getAssets()Landroid/content/res/AssetManager;
move-result-object v0
.line 121
invoke-virtual {v0, p2}, Landroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream;
move-result-object v0
.line 122
invoke-direct {p0, p3, v0, p4}, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->copyFile(Ljava/io/File;Ljava/io/InputStream;Ljava/lang/String;)V
.line 123
return-void
.end method
.method private copyFile(Ljava/io/File;Ljava/io/InputStream;Ljava/lang/String;)V
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.prologue
.line 126
invoke-virtual {p1}, Ljava/io/File;->getParentFile()Ljava/io/File;
move-result-object v0
invoke-virtual {v0}, Ljava/io/File;->exists()Z
move-result v0
if-nez v0, :cond_11
.line 127
invoke-virtual {p1}, Ljava/io/File;->getParentFile()Ljava/io/File;
move-result-object v0
invoke-virtual {v0}, Ljava/io/File;->mkdirs()Z
.line 129
:cond_11
invoke-virtual {p1}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v0
.line 130
new-instance v1, Ljava/io/FileOutputStream;
invoke-direct {v1, p1}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
.line 131
const/16 v2, 0x400
new-array v2, v2, [B
.line 133
:goto_1e
invoke-virtual {p2, v2}, Ljava/io/InputStream;->read([B)I
move-result v3
if-lez v3, :cond_29
.line 134
const/4 v4, 0x0
invoke-virtual {v1, v2, v4, v3}, Ljava/io/FileOutputStream;->write([BII)V
goto :goto_1e
.line 136
:cond_29
invoke-virtual {v1}, Ljava/io/FileOutputStream;->close()V
.line 137
invoke-virtual {p2}, Ljava/io/InputStream;->close()V
.line 138
invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
move-result-object v1
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "chmod "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, 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 {v1, v0}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Process;->waitFor()I
.line 139
return-void
.end method
.method private initAlarm(Landroid/content/Context;Ljava/lang/String;)V
.registers 7
.prologue
const/4 v3, 0x0
.line 78
iget-object v0, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->mAlarmManager:Landroid/app/AlarmManager;
if-nez v0, :cond_f
.line 79
const-string v0, "alarm"
invoke-virtual {p1, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/AlarmManager;
iput-object v0, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->mAlarmManager:Landroid/app/AlarmManager;
.line 81
:cond_f
iget-object v0, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->mPendingIntent:Landroid/app/PendingIntent;
if-nez v0, :cond_2f
.line 82
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 83
new-instance v1, Landroid/content/ComponentName;
invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, p2}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
.line 84
invoke-virtual {v0, v1}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
.line 85
const/16 v1, 0x10
invoke-virtual {v0, v1}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
.line 86
invoke-static {p1, v3, v0, v3}, Landroid/app/PendingIntent;->getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
move-result-object v0
iput-object v0, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->mPendingIntent:Landroid/app/PendingIntent;
.line 88
:cond_2f
iget-object v0, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->mAlarmManager:Landroid/app/AlarmManager;
iget-object v1, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->mPendingIntent:Landroid/app/PendingIntent;
invoke-virtual {v0, v1}, Landroid/app/AlarmManager;->cancel(Landroid/app/PendingIntent;)V
.line 89
return-void
.end method
.method private install(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
.registers 11
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 107
new-instance v3, Ljava/io/File;
invoke-virtual {p1, p2, v1}, Landroid/content/Context;->getDir(Ljava/lang/String;I)Ljava/io/File;
move-result-object v2
invoke-direct {v3, v2, p4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 108
invoke-virtual {v3}, Ljava/io/File;->exists()Z
move-result v2
if-eqz v2, :cond_12
.line 115
:goto_11
return v0
.line 112
:cond_12
:try_start_12
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
invoke-static {p3}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v2
if-eqz v2, :cond_34
const-string v2, ""
:goto_1f
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
const-string v4, "700"
invoke-direct {p0, p1, v2, v3, v4}, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->copyAssets(Landroid/content/Context;Ljava/lang/String;Ljava/io/File;Ljava/lang/String;)V
goto :goto_11
.line 114
:catch_31
move-exception v0
move v0, v1
.line 115
goto :goto_11
.line 112
:cond_34
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
sget-object v5, Ljava/io/File;->separator:Ljava/lang/String;
invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
:try_end_46
.catch Ljava/lang/Exception; {:try_start_12 .. :try_end_46} :catch_31
move-result-object v2
goto :goto_1f
.end method
.method private installBinary(Landroid/content/Context;)Z
.registers 5
.prologue
.line 93
.line 94
sget-object v0, Landroid/os/Build;->CPU_ABI:Ljava/lang/String;
.line 95
const-string v1, "armeabi-v7a"
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_15
.line 96
const-string v0, "armeabi-v7a"
.line 102
:goto_c
const-string v1, "bin"
const-string v2, "daemon"
invoke-direct {p0, p1, v1, v0, v2}, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->install(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
move-result v0
return v0
.line 97
:cond_15
const-string/jumbo v1, "x86"
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_22
.line 98
const-string/jumbo v0, "x86"
goto :goto_c
.line 100
:cond_22
const-string v0, "armeabi"
goto :goto_c
.end method
# virtual methods
.method public onDaemonAssistantCreate(Landroid/content/Context;Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;)V
.registers 7
.prologue
.line 59
new-instance v0, Landroid/content/Intent;
invoke-direct {v0}, Landroid/content/Intent;-><init>()V
.line 60
new-instance v1, Landroid/content/ComponentName;
invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v2
iget-object v3, p2, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;->PERSISTENT_CONFIG:Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonConfiguration;
iget-object v3, v3, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonConfiguration;->SERVICE_NAME:Ljava/lang/String;
invoke-direct {v1, v2, v3}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
.line 61
invoke-virtual {v0, v1}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
.line 62
invoke-virtual {p1, v0}, Landroid/content/Context;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
.line 63
if-eqz p2, :cond_23
iget-object v0, p2, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;->LISTENER:Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonListener;
if-eqz v0, :cond_23
.line 64
iget-object v0, p2, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;->LISTENER:Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonListener;
invoke-interface {v0}, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonListener;->onWatchDaemonDaed()V
.line 66
:cond_23
invoke-static {}, Landroid/os/Process;->myPid()I
move-result v0
invoke-static {v0}, Landroid/os/Process;->killProcess(I)V
.line 67
return-void
.end method
.method public onDaemonDead()V
.registers 8
.prologue
.line 72
iget-object v0, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->mAlarmManager:Landroid/app/AlarmManager;
const/4 v1, 0x3
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v2
const-wide/16 v4, 0x64
iget-object v6, p0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->mPendingIntent:Landroid/app/PendingIntent;
invoke-virtual/range {v0 .. v6}, Landroid/app/AlarmManager;->setRepeating(IJJLandroid/app/PendingIntent;)V
.line 73
invoke-static {}, Landroid/os/Process;->myPid()I
move-result v0
invoke-static {v0}, Landroid/os/Process;->killProcess(I)V
.line 74
return-void
.end method
.method public onInitialization(Landroid/content/Context;)Z
.registers 3
.prologue
.line 34
invoke-direct {p0, p1}, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->installBinary(Landroid/content/Context;)Z
move-result v0
return v0
.end method
.method public onPersistentCreate(Landroid/content/Context;Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;)V
.registers 5
.prologue
.line 39
iget-object v0, p2, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;->DAEMON_ASSISTANT_CONFIG:Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonConfiguration;
iget-object v0, v0, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonConfiguration;->SERVICE_NAME:Ljava/lang/String;
invoke-direct {p0, p1, v0}, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;->initAlarm(Landroid/content/Context;Ljava/lang/String;)V
.line 40
new-instance v0, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21$1;
invoke-direct {v0, p0, p1, p2}, Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21$1;-><init>(Lcom/cleanmaster/daemon/nativeforlive/strategy/DaemonStrategyUnder21;Landroid/content/Context;Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;)V
.line 49
const/16 v1, 0xa
invoke-virtual {v0, v1}, Ljava/lang/Thread;->setPriority(I)V
.line 50
invoke-virtual {v0}, Ljava/lang/Thread;->start()V
.line 52
if-eqz p2, :cond_1f
iget-object v0, p2, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;->LISTENER:Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonListener;
if-eqz v0, :cond_1f
.line 53
iget-object v0, p2, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations;->LISTENER:Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonListener;
invoke-interface {v0, p1}, Lcom/cleanmaster/daemon/nativeforlive/utils/DaemonConfigurations$DaemonListener;->onPersistentStart(Landroid/content/Context;)V
.line 55
:cond_1f
return-void
.end method