bic.smali
.class public Ldxoptimizer/bic;
.super Ljava/lang/Object;
.source "AppsSysService.java"
# interfaces
.implements Ldxoptimizer/bih;
# static fields
.field private static final a:Ljava/lang/String;
.field private static b:Ljava/lang/Object;
.field private static c:Ljava/lang/reflect/Method;
.field private static d:Ljava/lang/Boolean;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 17
const-class v0, Ldxoptimizer/bic;
invoke-virtual {v0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object v0
sput-object v0, Ldxoptimizer/bic;->a:Ljava/lang/String;
return-void
.end method
.method public constructor <init>()V
.registers 1
.prologue
.line 16
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method static a()Z
.registers 8
.prologue
const/4 v7, 0x0
const/4 v6, 0x0
.line 25
sget-object v0, Ldxoptimizer/bic;->d:Ljava/lang/Boolean;
if-nez v0, :cond_bc
sget-object v0, Ldxoptimizer/bic;->b:Ljava/lang/Object;
if-nez v0, :cond_bc
.line 27
:try_start_a
const-string v0, "android.os.ServiceManager"
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
.line 28
const-string v1, "getService"
const/4 v2, 0x1
new-array v2, v2, [Ljava/lang/Class;
const/4 v3, 0x0
const-class v4, Ljava/lang/String;
aput-object v4, v2, v3
invoke-virtual {v0, v1, v2}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
.line 29
const/4 v1, 0x0
const/4 v2, 0x1
new-array v2, v2, [Ljava/lang/Object;
const/4 v3, 0x0
const-string v4, "netstats"
aput-object v4, v2, v3
invoke-virtual {v0, v1, v2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/os/IBinder;
.line 30
if-nez v0, :cond_3b
.line 31
const/4 v0, 0x0
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
sput-object v0, Ldxoptimizer/bic;->d:Ljava/lang/Boolean;
invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
.line 62
:goto_3a
return v0
.line 33
:cond_3b
const-string v1, "android.net.INetworkStatsService$Stub"
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
.line 34
const-string v2, "asInterface"
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/Class;
const/4 v4, 0x0
const-class v5, Landroid/os/IBinder;
aput-object v5, v3, v4
invoke-virtual {v1, v2, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v1
.line 35
const/4 v2, 0x0
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/Object;
const/4 v4, 0x0
aput-object v0, v3, v4
invoke-virtual {v1, v2, v3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
.line 36
if-nez v0, :cond_68
.line 37
const/4 v0, 0x0
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
sput-object v0, Ldxoptimizer/bic;->d:Ljava/lang/Boolean;
invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
goto :goto_3a
.line 39
:cond_68
sput-object v0, Ldxoptimizer/bic;->b:Ljava/lang/Object;
.line 41
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
const-string v1, "getDataLayerSnapshotForUid"
const/4 v2, 0x1
new-array v2, v2, [Ljava/lang/Class;
const/4 v3, 0x0
sget-object v4, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
aput-object v4, v2, v3
invoke-virtual {v0, v1, v2}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
.line 42
if-nez v0, :cond_8a
.line 43
const/4 v0, 0x0
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
sput-object v0, Ldxoptimizer/bic;->d:Ljava/lang/Boolean;
invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
goto :goto_3a
.line 45
:cond_8a
sput-object v0, Ldxoptimizer/bic;->c:Ljava/lang/reflect/Method;
.line 46
sget-object v0, Ldxoptimizer/bic;->c:Ljava/lang/reflect/Method;
const/4 v1, 0x1
invoke-virtual {v0, v1}, Ljava/lang/reflect/Method;->setAccessible(Z)V
.line 47
sget-object v0, Ldxoptimizer/bic;->c:Ljava/lang/reflect/Method;
sget-object v1, Ldxoptimizer/bic;->b:Ljava/lang/Object;
const/4 v2, 0x1
new-array v2, v2, [Ljava/lang/Object;
const/4 v3, 0x0
const/4 v4, -0x1
invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v4
aput-object v4, v2, v3
invoke-virtual {v0, v1, v2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/net/NetworkStats;
.line 48
if-nez v0, :cond_b5
.line 49
const/4 v0, 0x0
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
sput-object v0, Ldxoptimizer/bic;->d:Ljava/lang/Boolean;
invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
goto :goto_3a
.line 51
:cond_b5
const/4 v0, 0x1
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
sput-object v0, Ldxoptimizer/bic;->d:Ljava/lang/Boolean;
:try_end_bc
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_bc} :catch_c4
.line 62
:cond_bc
:goto_bc
sget-object v0, Ldxoptimizer/bic;->d:Ljava/lang/Boolean;
invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
goto/16 :goto_3a
.line 52
:catch_c4
move-exception v0
.line 56
invoke-static {v6}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
sput-object v0, Ldxoptimizer/bic;->d:Ljava/lang/Boolean;
.line 57
sput-object v7, Ldxoptimizer/bic;->b:Ljava/lang/Object;
.line 58
sput-object v7, Ldxoptimizer/bic;->c:Ljava/lang/reflect/Method;
goto :goto_bc
.end method
.method private c()Landroid/net/NetworkStats;
.registers 7
.prologue
.line 93
const/4 v1, 0x0
.line 95
:try_start_1
sget-object v0, Ldxoptimizer/bic;->c:Ljava/lang/reflect/Method;
sget-object v2, Ldxoptimizer/bic;->b:Ljava/lang/Object;
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/Object;
const/4 v4, 0x0
const/4 v5, -0x1
invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v5
aput-object v5, v3, v4
invoke-virtual {v0, v2, v3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/net/NetworkStats;
:try_end_16
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_16} :catch_17
.line 101
:goto_16
return-object v0
.line 96
:catch_17
move-exception v0
move-object v0, v1
goto :goto_16
.end method
# virtual methods
.method public b()Landroid/util/SparseArray;
.registers 15
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Landroid/util/SparseArray",
"<",
"Ldxoptimizer/bhx;",
">;"
}
.end annotation
.prologue
const-wide/16 v12, 0x0
const/4 v10, 0x1
.line 66
new-instance v2, Landroid/util/SparseArray;
invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
.line 67
invoke-direct {p0}, Ldxoptimizer/bic;->c()Landroid/net/NetworkStats;
move-result-object v3
.line 68
if-eqz v3, :cond_68
.line 69
new-instance v4, Landroid/net/NetworkStats$Entry;
invoke-direct {v4}, Landroid/net/NetworkStats$Entry;-><init>()V
.line 70
const/4 v0, 0x0
move v1, v0
:goto_15
invoke-virtual {v3}, Landroid/net/NetworkStats;->size()I
move-result v0
if-ge v1, v0, :cond_68
.line 71
invoke-virtual {v3, v1, v4}, Landroid/net/NetworkStats;->getValues(ILandroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats$Entry;
.line 72
iget v0, v4, Landroid/net/NetworkStats$Entry;->uid:I
invoke-virtual {v2, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ldxoptimizer/bhx;
.line 73
if-nez v0, :cond_38
.line 74
new-instance v0, Ldxoptimizer/bhx;
invoke-direct {v0}, Ldxoptimizer/bhx;-><init>()V
.line 75
iget v5, v4, Landroid/net/NetworkStats$Entry;->uid:I
iput v5, v0, Ldxoptimizer/bhx;->a:I
.line 76
iget v5, v4, Landroid/net/NetworkStats$Entry;->uid:I
invoke-virtual {v2, v5, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
.line 77
iput v10, v0, Ldxoptimizer/bhx;->f:I
.line 80
:cond_38
iget v5, v4, Landroid/net/NetworkStats$Entry;->set:I
if-ne v5, v10, :cond_56
iget-wide v6, v4, Landroid/net/NetworkStats$Entry;->rxBytes:J
cmp-long v5, v6, v12
if-gtz v5, :cond_48
iget-wide v6, v4, Landroid/net/NetworkStats$Entry;->txBytes:J
cmp-long v5, v6, v12
if-lez v5, :cond_56
.line 81
:cond_48
iget-wide v6, v0, Ldxoptimizer/bhx;->d:J
iget-wide v8, v4, Landroid/net/NetworkStats$Entry;->rxBytes:J
add-long/2addr v6, v8
iput-wide v6, v0, Ldxoptimizer/bhx;->d:J
.line 82
iget-wide v6, v0, Ldxoptimizer/bhx;->e:J
iget-wide v8, v4, Landroid/net/NetworkStats$Entry;->txBytes:J
add-long/2addr v6, v8
iput-wide v6, v0, Ldxoptimizer/bhx;->e:J
.line 84
:cond_56
iget-wide v6, v0, Ldxoptimizer/bhx;->b:J
iget-wide v8, v4, Landroid/net/NetworkStats$Entry;->rxBytes:J
add-long/2addr v6, v8
iput-wide v6, v0, Ldxoptimizer/bhx;->b:J
.line 85
iget-wide v6, v0, Ldxoptimizer/bhx;->c:J
iget-wide v8, v4, Landroid/net/NetworkStats$Entry;->txBytes:J
add-long/2addr v6, v8
iput-wide v6, v0, Ldxoptimizer/bhx;->c:J
.line 70
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_15
.line 89
:cond_68
return-object v2
.end method