FloatingWindowManager.smali

.class public Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;
.super Ljava/lang/Object;
.source "FloatingWindowManager.java"


# static fields
.field public static final FLOATING_SHOW_TYPE_ACTIVITY:I = 0x1

.field public static final FLOATING_SHOW_TYPE_TOAST:I = 0x0

.field private static final HIDE_FLOATING_MSG:I = 0x0

.field private static final PROCESS_SERVICE:I = 0x0

.field private static final PROCESS_UI:I = 0x2

.field private static final PROCESS_WORK:I = 0x1

.field private static mInstance:Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;


# instance fields
.field private mContext:Landroid/content/Context;

.field private mFloatingActivity:Landroid/app/Activity;

.field private mFloatingCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

.field private mHandler:Landroid/os/Handler;

.field private mInnerCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

.field private mShowing:Z

.field private mView:Landroid/view/View;

.field private mWindowManager:Landroid/view/WindowManager;


# direct methods
.method private constructor <init>(Landroid/content/Context;)V
    .registers 3

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

    .line 42
    const/4 v0, 0x0

    iput-boolean v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mShowing:Z

    .line 45
    new-instance v0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager$1;

    invoke-direct {v0, p0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager$1;-><init>(Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;)V

    iput-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mHandler:Landroid/os/Handler;

    .line 198
    new-instance v0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager$2;

    invoke-direct {v0, p0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager$2;-><init>(Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;)V

    iput-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mInnerCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    .line 53
    iput-object p1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mContext:Landroid/content/Context;

    .line 54
    return-void
.end method

.method static synthetic access$000(Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;)Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;
    .registers 2

    .prologue
    .line 24
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    return-object v0
.end method

.method static synthetic access$102(Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;Landroid/app/Activity;)Landroid/app/Activity;
    .registers 2

    .prologue
    .line 24
    iput-object p1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingActivity:Landroid/app/Activity;

    return-object p1
.end method

.method private choseFloatingType()I
    .registers 2

    .prologue
    .line 172
    invoke-direct {p0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->isNeedActivityGuide()Z

    move-result v0

    if-eqz v0, :cond_8

    .line 173
    const/4 v0, 0x1

    .line 175
    :goto_7
    return v0

    :cond_8
    const/4 v0, 0x0

    goto :goto_7
.end method

.method private getCurProcessName(Landroid/content/Context;)Ljava/lang/String;
    .registers 7

    .prologue
    const/4 v1, 0x0

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

    move-result v2

    .line 180
    const-string v0, "activity"

    .line 181
    invoke-virtual {p1, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/app/ActivityManager;

    .line 183
    if-nez v0, :cond_11

    move-object v0, v1

    .line 195
    :goto_10
    return-object v0

    .line 186
    :cond_11
    invoke-virtual {v0}, Landroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;

    move-result-object v0

    .line 187
    if-nez v0, :cond_19

    move-object v0, v1

    .line 188
    goto :goto_10

    .line 190
    :cond_19
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v3

    :cond_1d
    invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_30

    invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/app/ActivityManager$RunningAppProcessInfo;

    .line 191
    iget v4, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->pid:I

    if-ne v4, v2, :cond_1d

    .line 192
    iget-object v0, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->processName:Ljava/lang/String;

    goto :goto_10

    :cond_30
    move-object v0, v1

    .line 195
    goto :goto_10
.end method

.method public static getInstance(Landroid/content/Context;)Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;
    .registers 4

    .prologue
    .line 57
    sget-object v0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mInstance:Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;

    if-nez v0, :cond_17

    .line 58
    const-class v1, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;

    monitor-enter v1

    .line 59
    :try_start_7
    sget-object v0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mInstance:Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;

    if-nez v0, :cond_16

    .line 60
    new-instance v0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;

    invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;

    move-result-object v2

    invoke-direct {v0, v2}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;-><init>(Landroid/content/Context;)V

    sput-object v0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mInstance:Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;

    .line 62
    :cond_16
    monitor-exit v1
    :try_end_17
    .catchall {:try_start_7 .. :try_end_17} :catchall_1a

    .line 64
    :cond_17
    sget-object v0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mInstance:Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;

    return-object v0

    .line 62
    :catchall_1a
    move-exception v0

    :try_start_1b
    monitor-exit v1
    :try_end_1c
    .catchall {:try_start_1b .. :try_end_1c} :catchall_1a

    throw v0
.end method

.method private getProcessType(Ljava/lang/String;)I
    .registers 4

    .prologue
    const/4 v0, -0x1

    .line 105
    invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v1

    if-eqz v1, :cond_8

    .line 115
    :cond_7
    :goto_7
    return v0

    .line 108
    :cond_8
    const-string v1, ":"

    invoke-virtual {p1, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v1

    if-nez v1, :cond_12

    .line 109
    const/4 v0, 0x2

    goto :goto_7

    .line 110
    :cond_12
    const-string v1, ":service"

    invoke-virtual {p1, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v1

    if-eqz v1, :cond_1c

    .line 111
    const/4 v0, 0x0

    goto :goto_7

    .line 112
    :cond_1c
    const-string v1, ":work"

    invoke-virtual {p1, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v1

    if-eqz v1, :cond_7

    .line 113
    const/4 v0, 0x1

    goto :goto_7
.end method

.method private isNeedActivityGuide()Z
    .registers 4

    .prologue
    const/4 v0, 0x0

    .line 263
    iget-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    invoke-interface {v1}, Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;->hasFloatingPermission()Z

    move-result v1

    if-eqz v1, :cond_a

    .line 269
    :cond_9
    :goto_9
    return v0

    .line 266
    :cond_a
    invoke-static {}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->isOppo()Z

    move-result v1

    if-nez v1, :cond_16

    const/16 v1, 0x18

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

    if-gt v1, v2, :cond_9

    .line 267
    :cond_16
    const/4 v0, 0x1

    goto :goto_9
.end method

.method public static isOppo()Z
    .registers 2

    .prologue
    .line 255
    sget-object v0, Landroid/os/Build;->BRAND:Ljava/lang/String;

    invoke-virtual {v0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v0

    const-string/jumbo v1, "oppo"

    invoke-virtual {v0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v0

    return v0
.end method

.method private resetFloatingState()V
    .registers 3

    .prologue
    const/4 v1, 0x0

    .line 164
    iput-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    .line 165
    iput-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingActivity:Landroid/app/Activity;

    .line 166
    iput-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mWindowManager:Landroid/view/WindowManager;

    .line 167
    const/4 v0, 0x0

    iput-boolean v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mShowing:Z

    .line 168
    iput-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mView:Landroid/view/View;

    .line 169
    return-void
.end method

.method private showActivity(I)V
    .registers 5

    .prologue
    .line 96
    const/4 v0, -0x1

    if-ne p1, v0, :cond_4

    .line 102
    :goto_3
    return-void

    .line 99
    :cond_4
    new-instance v0, Landroid/content/Intent;

    iget-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mContext:Landroid/content/Context;

    const-class v2, Lcom/cleanmaster/hpcommonlib/view/FloatingActivity;

    invoke-direct {v0, v1, v2}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

    .line 100
    const/high16 v1, 0x10000000

    invoke-virtual {v0, v1}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;

    .line 101
    iget-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mContext:Landroid/content/Context;

    invoke-virtual {v1, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V

    goto :goto_3
.end method

.method private showActivityFloating()V
    .registers 2

    .prologue
    .line 90
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mContext:Landroid/content/Context;

    invoke-direct {p0, v0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->getCurProcessName(Landroid/content/Context;)Ljava/lang/String;

    move-result-object v0

    .line 91
    invoke-direct {p0, v0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->getProcessType(Ljava/lang/String;)I

    move-result v0

    .line 92
    invoke-direct {p0, v0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->showActivity(I)V

    .line 93
    return-void
.end method

.method private showFloating(I)V
    .registers 8

    .prologue
    .line 78
    const/4 v0, 0x1

    if-ne p1, v0, :cond_16

    .line 79
    invoke-direct {p0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->showActivityFloating()V

    .line 83
    :goto_6
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    invoke-interface {v0}, Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;->getOutTime()I

    move-result v0

    .line 84
    if-lez v0, :cond_15

    .line 85
    iget-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mHandler:Landroid/os/Handler;

    const/4 v2, 0x0

    int-to-long v4, v0

    invoke-virtual {v1, v2, v4, v5}, Landroid/os/Handler;->sendEmptyMessageDelayed(IJ)Z

    .line 87
    :cond_15
    return-void

    .line 81
    :cond_16
    invoke-direct {p0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->showToastFloating()V

    goto :goto_6
.end method

.method private showToastFloating()V
    .registers 5

    .prologue
    const/4 v3, 0x1

    .line 119
    iput-boolean v3, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mShowing:Z

    .line 120
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mContext:Landroid/content/Context;

    const-string/jumbo v1, "window"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/view/WindowManager;

    iput-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mWindowManager:Landroid/view/WindowManager;

    .line 121
    new-instance v0, Landroid/view/WindowManager$LayoutParams;

    invoke-direct {v0}, Landroid/view/WindowManager$LayoutParams;-><init>()V

    .line 122
    sget v1, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v2, 0x1a

    if-lt v1, v2, :cond_46

    .line 123
    const/16 v1, 0x7f6

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->type:I

    .line 129
    :goto_1f
    const v1, 0x6401a8

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->flags:I

    .line 136
    const/16 v1, 0x31

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->gravity:I

    .line 137
    const/4 v1, -0x1

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->width:I

    .line 138
    const/4 v1, -0x2

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->height:I

    .line 139
    iput v3, v0, Landroid/view/WindowManager$LayoutParams;->format:I

    .line 140
    iget-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    const/4 v2, 0x0

    invoke-interface {v1, v2, v0}, Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;->onLayout(ILandroid/view/ViewGroup$LayoutParams;)V

    .line 141
    iget-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    invoke-interface {v1}, Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;->getView()Landroid/view/View;

    move-result-object v1

    iput-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mView:Landroid/view/View;

    .line 143
    :try_start_3e
    iget-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mWindowManager:Landroid/view/WindowManager;

    iget-object v2, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mView:Landroid/view/View;

    invoke-interface {v1, v2, v0}, Landroid/view/WindowManager;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
    :try_end_45
    .catch Ljava/lang/Exception; {:try_start_3e .. :try_end_45} :catch_56

    .line 147
    :goto_45
    return-void

    .line 124
    :cond_46
    sget v1, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v2, 0x17

    if-lt v1, v2, :cond_51

    .line 125
    const/16 v1, 0x7d2

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->type:I

    goto :goto_1f

    .line 127
    :cond_51
    const/16 v1, 0x7da

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->type:I

    goto :goto_1f

    .line 144
    :catch_56
    move-exception v0

    .line 145
    invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V

    goto :goto_45
.end method


# virtual methods
.method public getFloatingCallback()Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;
    .registers 2

    .prologue
    .line 259
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mInnerCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    return-object v0
.end method

.method public hideFloatingWindow()V
    .registers 4

    .prologue
    const/4 v2, 0x0

    .line 150
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mHandler:Landroid/os/Handler;

    invoke-virtual {v0, v2}, Landroid/os/Handler;->removeMessages(I)V

    .line 151
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mView:Landroid/view/View;

    if-eqz v0, :cond_1b

    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mWindowManager:Landroid/view/WindowManager;

    if-eqz v0, :cond_1b

    iget-boolean v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mShowing:Z

    if-eqz v0, :cond_1b

    .line 153
    :try_start_12
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mWindowManager:Landroid/view/WindowManager;

    iget-object v1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mView:Landroid/view/View;

    invoke-interface {v0, v1}, Landroid/view/WindowManager;->removeView(Landroid/view/View;)V
    :try_end_19
    .catch Ljava/lang/Exception; {:try_start_12 .. :try_end_19} :catch_28

    .line 155
    :goto_19
    iput-boolean v2, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mShowing:Z

    .line 157
    :cond_1b
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingActivity:Landroid/app/Activity;

    if-eqz v0, :cond_24

    .line 158
    iget-object v0, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingActivity:Landroid/app/Activity;

    invoke-virtual {v0}, Landroid/app/Activity;->finish()V

    .line 160
    :cond_24
    invoke-direct {p0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->resetFloatingState()V

    .line 161
    return-void

    .line 154
    :catch_28
    move-exception v0

    goto :goto_19
.end method

.method public showFloatingWindow(Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;)V
    .registers 3

    .prologue
    .line 68
    if-nez p1, :cond_3

    .line 75
    :goto_2
    return-void

    .line 71
    :cond_3
    invoke-virtual {p0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->hideFloatingWindow()V

    .line 72
    iput-object p1, p0, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->mFloatingCallback:Lcom/cleanmaster/hpcommonlib/view/FloatingCallback;

    .line 73
    invoke-direct {p0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->choseFloatingType()I

    move-result v0

    .line 74
    invoke-direct {p0, v0}, Lcom/cleanmaster/hpcommonlib/view/FloatingWindowManager;->showFloating(I)V

    goto :goto_2
.end method