TinkerServiceInternals.smali
.class public Lcom/tencent/tinker/lib/util/TinkerServiceInternals;
.super Lcom/tencent/tinker/loader/shareutil/ShareTinkerInternals;
# static fields
.field private static final TAG:Ljava/lang/String; = "Tinker.ServiceInternals"
.field private static patchServiceProcessName:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
const/4 v0, 0x0
sput-object v0, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->patchServiceProcessName:Ljava/lang/String;
return-void
.end method
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Lcom/tencent/tinker/loader/shareutil/ShareTinkerInternals;-><init>()V
return-void
.end method
.method private static getServiceProcessName(Landroid/content/Context;Ljava/lang/Class;)Ljava/lang/String;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/content/Context;",
"Ljava/lang/Class",
"<+",
"Landroid/app/Service;",
">;)",
"Ljava/lang/String;"
}
.end annotation
invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v0
new-instance v1, Landroid/content/ComponentName;
invoke-direct {v1, p0, p1}, Landroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
const/4 v2, 0x0
:try_start_a
invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;
:try_end_d
.catch Ljava/lang/Throwable; {:try_start_a .. :try_end_d} :catch_11
move-result-object v0
iget-object v0, v0, Landroid/content/pm/ServiceInfo;->processName:Ljava/lang/String;
:goto_10
return-object v0
:catch_11
move-exception v0
const/4 v0, 0x0
goto :goto_10
.end method
.method public static getTinkerPatchServiceName(Landroid/content/Context;)Ljava/lang/String;
.registers 2
sget-object v0, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->patchServiceProcessName:Ljava/lang/String;
if-eqz v0, :cond_7
sget-object v0, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->patchServiceProcessName:Ljava/lang/String;
:goto_6
return-object v0
:cond_7
invoke-static {}, Lcom/tencent/tinker/lib/service/TinkerPatchService;->getExpectedRealRunnerClass()Ljava/lang/Class;
move-result-object v0
invoke-static {p0, v0}, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->getServiceProcessName(Landroid/content/Context;Ljava/lang/Class;)Ljava/lang/String;
move-result-object v0
if-nez v0, :cond_13
const/4 v0, 0x0
goto :goto_6
:cond_13
sput-object v0, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->patchServiceProcessName:Ljava/lang/String;
sget-object v0, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->patchServiceProcessName:Ljava/lang/String;
goto :goto_6
.end method
.method public static isInTinkerPatchServiceProcess(Landroid/content/Context;)Z
.registers 4
invoke-static {p0}, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->getProcessName(Landroid/content/Context;)Ljava/lang/String;
move-result-object v0
invoke-static {p0}, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->getTinkerPatchServiceName(Landroid/content/Context;)Ljava/lang/String;
move-result-object v1
if-eqz v1, :cond_10
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_12
:cond_10
const/4 v0, 0x0
:goto_11
return v0
:cond_12
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
goto :goto_11
.end method
.method public static isTinkerPatchServiceRunning(Landroid/content/Context;)Z
.registers 6
const/4 v1, 0x0
const-string/jumbo v0, "activity"
invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/ActivityManager;
invoke-static {p0}, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->getTinkerPatchServiceName(Landroid/content/Context;)Ljava/lang/String;
move-result-object v2
if-nez v2, :cond_12
move v0, v1
:goto_11
return v0
:cond_12
:try_start_12
invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
move-result-object v0
if-nez v0, :cond_1a
move v0, v1
goto :goto_11
:cond_1a
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:cond_1e
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_76
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/ActivityManager$RunningAppProcessInfo;
iget-object v0, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->processName:Ljava/lang/String;
invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
:try_end_2f
.catch Ljava/lang/Exception; {:try_start_12 .. :try_end_2f} :catch_34
.catch Ljava/lang/Error; {:try_start_12 .. :try_end_2f} :catch_55
move-result v0
if-eqz v0, :cond_1e
const/4 v0, 0x1
goto :goto_11
:catch_34
move-exception v0
const-string/jumbo v2, "Tinker.ServiceInternals"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v4, "isTinkerPatchServiceRunning Exception: "
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-static {v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
move v0, v1
goto :goto_11
:catch_55
move-exception v0
const-string/jumbo v2, "Tinker.ServiceInternals"
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v4, "isTinkerPatchServiceRunning Error: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v0}, Ljava/lang/Error;->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-static {v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
move v0, v1
goto :goto_11
:cond_76
move v0, v1
goto :goto_11
.end method
.method public static killTinkerPatchServiceProcess(Landroid/content/Context;)V
.registers 5
invoke-static {p0}, Lcom/tencent/tinker/lib/util/TinkerServiceInternals;->getTinkerPatchServiceName(Landroid/content/Context;)Ljava/lang/String;
move-result-object v1
if-nez v1, :cond_7
:cond_6
return-void
:cond_7
const-string/jumbo v0, "activity"
invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/ActivityManager;
invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
move-result-object v0
if-eqz v0, :cond_6
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_1a
:goto_1a
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_6
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/ActivityManager$RunningAppProcessInfo;
iget-object v3, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->processName:Ljava/lang/String;
invoke-virtual {v3, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_1a
iget v0, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->pid:I
invoke-static {v0}, Landroid/os/Process;->killProcess(I)V
goto :goto_1a
.end method