ProcessUtils.smali
.class public final Lcom/blankj/utilcode/util/ProcessUtils;
.super Ljava/lang/Object;
.source "ProcessUtils.java"
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>()V
.registers 3
.line 35
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 36
new-instance v0, Ljava/lang/UnsupportedOperationException;
const-string/jumbo v1, "u can\'t instantiate me..."
invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static getAllBackgroundProcesses()Ljava/util/Set;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Set<",
"Ljava/lang/String;",
">;"
}
.end annotation
.line 122
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v0
const-string v1, "activity"
invoke-virtual {v0, v1}, Landroid/app/Application;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/ActivityManager;
.line 123
.local v0, "am":Landroid/app/ActivityManager;
invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
move-result-object v1
.line 124
.local v1, "info":Ljava/util/List;, "Ljava/util/List<Landroid/app/ActivityManager$RunningAppProcessInfo;>;"
new-instance v2, Ljava/util/HashSet;
invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
.line 125
.local v2, "set":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
if-eqz v1, :cond_2d
.line 126
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_1b
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_2d
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/app/ActivityManager$RunningAppProcessInfo;
.line 127
.local v4, "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
iget-object v5, v4, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
invoke-static {v2, v5}, Ljava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z
.line 128
.end local v4 # "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
goto :goto_1b
.line 130
:cond_2d
return-object v2
.end method
.method public static getCurrentProcessName()Ljava/lang/String;
.registers 1
.line 204
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getCurrentProcessName()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public static getForegroundProcessName()Ljava/lang/String;
.registers 20
.line 48
const-string v0, "android:get_usage_stats"
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v1
const-string v2, "activity"
invoke-virtual {v1, v2}, Landroid/app/Application;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Landroid/app/ActivityManager;
.line 49
.local v1, "am":Landroid/app/ActivityManager;
invoke-virtual {v1}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
move-result-object v2
.line 50
.local v2, "pInfo":Ljava/util/List;, "Ljava/util/List<Landroid/app/ActivityManager$RunningAppProcessInfo;>;"
if-eqz v2, :cond_34
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v3
if-lez v3, :cond_34
.line 51
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_1e
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_34
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/app/ActivityManager$RunningAppProcessInfo;
.line 52
.local v4, "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
iget v5, v4, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I
const/16 v6, 0x64
if-ne v5, v6, :cond_33
.line 54
iget-object v0, v4, Landroid/app/ActivityManager$RunningAppProcessInfo;->processName:Ljava/lang/String;
return-object v0
.line 56
.end local v4 # "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
:cond_33
goto :goto_1e
.line 58
:cond_34
sget v3, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v4, 0x15
const-string v5, ""
if-le v3, v4, :cond_104
.line 59
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v3
invoke-virtual {v3}, Landroid/app/Application;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v3
.line 60
.local v3, "pm":Landroid/content/pm/PackageManager;
new-instance v4, Landroid/content/Intent;
const-string v6, "android.settings.USAGE_ACCESS_SETTINGS"
invoke-direct {v4, v6}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
.line 61
.local v4, "intent":Landroid/content/Intent;
const/high16 v6, 0x10000
.line 62
invoke-virtual {v3, v4, v6}, Landroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
move-result-object v6
.line 63
.local v6, "list":Ljava/util/List;, "Ljava/util/List<Landroid/content/pm/ResolveInfo;>;"
invoke-virtual {v6}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v7
const-string v8, "ProcessUtils"
invoke-static {v8, v7}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
.line 64
invoke-interface {v6}, Ljava/util/List;->size()I
move-result v7
if-gtz v7, :cond_66
.line 65
const-string v0, "getForegroundProcessName: noun of access to usage information."
invoke-static {v8, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
.line 67
return-object v5
.line 70
:cond_66
nop
.line 71
:try_start_67
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v7
invoke-virtual {v7}, Landroid/app/Application;->getPackageName()Ljava/lang/String;
move-result-object v7
const/4 v9, 0x0
invoke-virtual {v3, v7, v9}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
move-result-object v7
.line 73
.local v7, "info":Landroid/content/pm/ApplicationInfo;
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v9
const-string v10, "appops"
invoke-virtual {v9, v10}, Landroid/app/Application;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v9
check-cast v9, Landroid/app/AppOpsManager;
.line 74
.local v9, "aom":Landroid/app/AppOpsManager;
iget v10, v7, Landroid/content/pm/ApplicationInfo;->uid:I
iget-object v11, v7, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
invoke-virtual {v9, v0, v10, v11}, Landroid/app/AppOpsManager;->checkOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I
move-result v10
if-eqz v10, :cond_96
.line 77
const/high16 v10, 0x10000000
invoke-virtual {v4, v10}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
.line 78
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v10
invoke-virtual {v10, v4}, Landroid/app/Application;->startActivity(Landroid/content/Intent;)V
.line 80
:cond_96
iget v10, v7, Landroid/content/pm/ApplicationInfo;->uid:I
iget-object v11, v7, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
invoke-virtual {v9, v0, v10, v11}, Landroid/app/AppOpsManager;->checkOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I
move-result v0
if-eqz v0, :cond_a6
.line 83
const-string v0, "getForegroundProcessName: refuse to device usage stats."
invoke-static {v8, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
.line 85
return-object v5
.line 87
:cond_a6
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v0
const-string/jumbo v8, "usagestats"
.line 88
invoke-virtual {v0, v8}, Landroid/app/Application;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/usage/UsageStatsManager;
.line 89
.local v0, "usageStatsManager":Landroid/app/usage/UsageStatsManager;
const/4 v8, 0x0
.line 90
.local v8, "usageStatsList":Ljava/util/List;, "Ljava/util/List<Landroid/app/usage/UsageStats;>;"
if-eqz v0, :cond_cc
.line 91
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v10
move-wide/from16 v16, v10
.line 92
.local v16, "endTime":J
const-wide/32 v10, 0x240c8400
sub-long v18, v16, v10
.line 93
.local v18, "beginTime":J
const/4 v11, 0x4
.line 94
move-object v10, v0
move-wide/from16 v12, v18
move-wide/from16 v14, v16
invoke-virtual/range {v10 .. v15}, Landroid/app/usage/UsageStatsManager;->queryUsageStats(IJJ)Ljava/util/List;
move-result-object v10
move-object v8, v10
.line 97
.end local v16 # "endTime":J
.end local v18 # "beginTime":J
:cond_cc
if-eqz v8, :cond_ff
invoke-interface {v8}, Ljava/util/List;->isEmpty()Z
move-result v10
if-eqz v10, :cond_d5
goto :goto_ff
.line 98
:cond_d5
const/4 v10, 0x0
.line 99
.local v10, "recentStats":Landroid/app/usage/UsageStats;
invoke-interface {v8}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v11
:goto_da
invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z
move-result v12
if-eqz v12, :cond_f6
invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v12
check-cast v12, Landroid/app/usage/UsageStats;
.line 100
.local v12, "usageStats":Landroid/app/usage/UsageStats;
if-eqz v10, :cond_f4
.line 101
invoke-virtual {v12}, Landroid/app/usage/UsageStats;->getLastTimeUsed()J
move-result-wide v13
invoke-virtual {v10}, Landroid/app/usage/UsageStats;->getLastTimeUsed()J
move-result-wide v15
cmp-long v17, v13, v15
if-lez v17, :cond_f5
.line 102
:cond_f4
move-object v10, v12
.line 104
.end local v12 # "usageStats":Landroid/app/usage/UsageStats;
:cond_f5
goto :goto_da
.line 105
:cond_f6
if-nez v10, :cond_fa
const/4 v5, 0x0
goto :goto_fe
:cond_fa
invoke-virtual {v10}, Landroid/app/usage/UsageStats;->getPackageName()Ljava/lang/String;
move-result-object v5
:try_end_fe
.catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_67 .. :try_end_fe} :catch_100
:goto_fe
return-object v5
.line 97
.end local v10 # "recentStats":Landroid/app/usage/UsageStats;
:cond_ff
:goto_ff
return-object v5
.line 106
.end local v0 # "usageStatsManager":Landroid/app/usage/UsageStatsManager;
.end local v7 # "info":Landroid/content/pm/ApplicationInfo;
.end local v8 # "usageStatsList":Ljava/util/List;, "Ljava/util/List<Landroid/app/usage/UsageStats;>;"
.end local v9 # "aom":Landroid/app/AppOpsManager;
:catch_100
move-exception v0
.line 107
.local v0, "e":Landroid/content/pm/PackageManager$NameNotFoundException;
invoke-virtual {v0}, Landroid/content/pm/PackageManager$NameNotFoundException;->printStackTrace()V
.line 110
.end local v0 # "e":Landroid/content/pm/PackageManager$NameNotFoundException;
.end local v3 # "pm":Landroid/content/pm/PackageManager;
.end local v4 # "intent":Landroid/content/Intent;
.end local v6 # "list":Ljava/util/List;, "Ljava/util/List<Landroid/content/pm/ResolveInfo;>;"
:cond_104
return-object v5
.end method
.method public static isMainProcess()Z
.registers 2
.line 195
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v0
invoke-virtual {v0}, Landroid/app/Application;->getPackageName()Ljava/lang/String;
move-result-object v0
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getCurrentProcessName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
return v0
.end method
.method public static killAllBackgroundProcesses()Ljava/util/Set;
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Set<",
"Ljava/lang/String;",
">;"
}
.end annotation
.line 142
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v0
const-string v1, "activity"
invoke-virtual {v0, v1}, Landroid/app/Application;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/ActivityManager;
.line 143
.local v0, "am":Landroid/app/ActivityManager;
invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
move-result-object v1
.line 144
.local v1, "info":Ljava/util/List;, "Ljava/util/List<Landroid/app/ActivityManager$RunningAppProcessInfo;>;"
new-instance v2, Ljava/util/HashSet;
invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
.line 145
.local v2, "set":Ljava/util/Set;, "Ljava/util/Set<Ljava/lang/String;>;"
if-nez v1, :cond_18
return-object v2
.line 146
:cond_18
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_1c
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
const/4 v5, 0x0
if-eqz v4, :cond_3a
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/app/ActivityManager$RunningAppProcessInfo;
.line 147
.local v4, "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
iget-object v6, v4, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
array-length v7, v6
:goto_2c
if-ge v5, v7, :cond_39
aget-object v8, v6, v5
.line 148
.local v8, "pkg":Ljava/lang/String;
invoke-virtual {v0, v8}, Landroid/app/ActivityManager;->killBackgroundProcesses(Ljava/lang/String;)V
.line 149
invoke-interface {v2, v8}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 147
.end local v8 # "pkg":Ljava/lang/String;
add-int/lit8 v5, v5, 0x1
goto :goto_2c
.line 151
.end local v4 # "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
:cond_39
goto :goto_1c
.line 152
:cond_3a
invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
move-result-object v1
.line 153
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_42
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_5d
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/app/ActivityManager$RunningAppProcessInfo;
.line 154
.restart local v4 # "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
iget-object v6, v4, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
array-length v7, v6
const/4 v8, 0x0
:goto_52
if-ge v8, v7, :cond_5c
aget-object v9, v6, v8
.line 155
.local v9, "pkg":Ljava/lang/String;
invoke-interface {v2, v9}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 154
.end local v9 # "pkg":Ljava/lang/String;
add-int/lit8 v8, v8, 0x1
goto :goto_52
.line 157
.end local v4 # "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
:cond_5c
goto :goto_42
.line 158
:cond_5d
return-object v2
.end method
.method public static killBackgroundProcesses(Ljava/lang/String;)Z
.registers 7
.param p0, "packageName" # Ljava/lang/String;
.line 169
if-eqz p0, :cond_6b
.line 171
invoke-static {}, Lcom/blankj/utilcode/util/Utils;->getApp()Landroid/app/Application;
move-result-object v0
const-string v1, "activity"
invoke-virtual {v0, v1}, Landroid/app/Application;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/ActivityManager;
.line 172
.local v0, "am":Landroid/app/ActivityManager;
invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
move-result-object v1
.line 173
.local v1, "info":Ljava/util/List;, "Ljava/util/List<Landroid/app/ActivityManager$RunningAppProcessInfo;>;"
const/4 v2, 0x1
if-eqz v1, :cond_6a
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v3
if-nez v3, :cond_1c
goto :goto_6a
.line 174
:cond_1c
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_20
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_3c
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/app/ActivityManager$RunningAppProcessInfo;
.line 175
.local v4, "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
iget-object v5, v4, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
invoke-static {v5}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object v5
invoke-interface {v5, p0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_3b
.line 176
invoke-virtual {v0, p0}, Landroid/app/ActivityManager;->killBackgroundProcesses(Ljava/lang/String;)V
.line 178
.end local v4 # "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
:cond_3b
goto :goto_20
.line 179
:cond_3c
invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
move-result-object v1
.line 180
if-eqz v1, :cond_69
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v3
if-nez v3, :cond_49
goto :goto_69
.line 181
:cond_49
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_4d
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_68
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/app/ActivityManager$RunningAppProcessInfo;
.line 182
.restart local v4 # "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
iget-object v5, v4, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
invoke-static {v5}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object v5
invoke-interface {v5, p0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_67
.line 183
const/4 v2, 0x0
return v2
.line 185
.end local v4 # "aInfo":Landroid/app/ActivityManager$RunningAppProcessInfo;
:cond_67
goto :goto_4d
.line 186
:cond_68
return v2
.line 180
:cond_69
:goto_69
return v2
.line 173
:cond_6a
:goto_6a
return v2
.line 169
.end local v0 # "am":Landroid/app/ActivityManager;
.end local v1 # "info":Ljava/util/List;, "Ljava/util/List<Landroid/app/ActivityManager$RunningAppProcessInfo;>;"
:cond_6b
new-instance v0, Ljava/lang/NullPointerException;
const-string v1, "Argument \'packageName\' of type String (#0 out of 1, zero-based) is marked by @android.support.annotation.NonNull but got null for it"
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
goto :goto_74
:goto_73
throw v0
:goto_74
goto :goto_73
.end method