GcmAvailableHelper.smali

.class final Lcom/evernote/android/job/GcmAvailableHelper;
.super Ljava/lang/Object;


# static fields
.field private static final a:Lcom/evernote/android/job/util/JobCat;

.field private static final b:Z

.field private static c:I

.field private static d:Z


# direct methods
.method static constructor <clinit>()V
    .registers 2

    new-instance v0, Lcom/evernote/android/job/util/JobCat;

    const-string v1, "GcmAvailableHelper"

    invoke-direct {v0, v1}, Lcom/evernote/android/job/util/JobCat;-><init>(Ljava/lang/String;)V

    sput-object v0, Lcom/evernote/android/job/GcmAvailableHelper;->a:Lcom/evernote/android/job/util/JobCat;

    const/4 v0, -0x1

    sput v0, Lcom/evernote/android/job/GcmAvailableHelper;->c:I

    :try_start_c
    const-string v0, "com.google.android.gms.gcm.GcmNetworkManager"

    invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
    :try_end_11
    .catchall {:try_start_c .. :try_end_11} :catchall_13

    const/4 v0, 0x1

    goto :goto_14

    :catchall_13
    const/4 v0, 0x0

    :goto_14
    sput-boolean v0, Lcom/evernote/android/job/GcmAvailableHelper;->b:Z

    return-void
.end method

.method private static a()Ljava/lang/String;
    .registers 2

    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-class v1, Lcom/evernote/android/job/gcm/JobProxyGcm;

    invoke-virtual {v1}, Ljava/lang/Class;->getPackage()Ljava/lang/Package;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/Package;->getName()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, ".PlatformGcmService"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

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

    move-result-object v0

    return-object v0
.end method

.method private static b(Ljava/util/List;)Z
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List<",
            "Landroid/content/pm/ResolveInfo;",
            ">;)Z"
        }
    .end annotation

    const/4 v0, 0x0

    if-eqz p0, :cond_30

    invoke-interface {p0}, Ljava/util/List;->isEmpty()Z

    move-result v1

    if-eqz v1, :cond_a

    goto :goto_30

    :cond_a
    invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object p0

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

    move-result v1

    if-eqz v1, :cond_30

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

    move-result-object v1

    check-cast v1, Landroid/content/pm/ResolveInfo;

    iget-object v2, v1, Landroid/content/pm/ResolveInfo;->serviceInfo:Landroid/content/pm/ServiceInfo;

    if-eqz v2, :cond_e

    iget-object v2, v2, Landroid/content/pm/ServiceInfo;->permission:Ljava/lang/String;

    const-string v3, "com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"

    invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_e

    iget-object v1, v1, Landroid/content/pm/ResolveInfo;->serviceInfo:Landroid/content/pm/ServiceInfo;

    iget-boolean v1, v1, Landroid/content/pm/ServiceInfo;->exported:Z

    if-eqz v1, :cond_e

    const/4 p0, 0x1

    return p0

    :cond_30
    :goto_30
    return v0
.end method

.method public static c(Landroid/content/Context;)Z
    .registers 4

    const/4 v0, 0x0

    :try_start_1
    sget-boolean v1, Lcom/evernote/android/job/GcmAvailableHelper;->d:Z

    const/4 v2, 0x1

    if-nez v1, :cond_d

    sput-boolean v2, Lcom/evernote/android/job/GcmAvailableHelper;->d:Z

    sget-boolean v1, Lcom/evernote/android/job/GcmAvailableHelper;->b:Z

    invoke-static {p0, v1}, Lcom/evernote/android/job/GcmAvailableHelper;->e(Landroid/content/Context;Z)V

    :cond_d
    sget-boolean v1, Lcom/evernote/android/job/GcmAvailableHelper;->b:Z

    if-eqz v1, :cond_22

    invoke-static {}, Lcom/google/android/gms/common/GoogleApiAvailability;->getInstance()Lcom/google/android/gms/common/GoogleApiAvailability;

    move-result-object v1

    invoke-virtual {v1, p0}, Lcom/google/android/gms/common/GoogleApiAvailability;->isGooglePlayServicesAvailable(Landroid/content/Context;)I

    move-result v1

    if-nez v1, :cond_22

    invoke-static {p0}, Lcom/evernote/android/job/GcmAvailableHelper;->d(Landroid/content/Context;)I

    move-result p0
    :try_end_1f
    .catchall {:try_start_1 .. :try_end_1f} :catchall_22

    if-nez p0, :cond_22

    const/4 v0, 0x1

    :catchall_22
    :cond_22
    return v0
.end method

.method private static d(Landroid/content/Context;)I
    .registers 6

    sget v0, Lcom/evernote/android/job/GcmAvailableHelper;->c:I

    if-gez v0, :cond_57

    const-class v0, Lcom/evernote/android/job/JobApi;

    monitor-enter v0

    :try_start_7
    sget v1, Lcom/evernote/android/job/GcmAvailableHelper;->c:I

    if-gez v1, :cond_52

    new-instance v1, Landroid/content/Intent;

    invoke-direct {v1}, Landroid/content/Intent;-><init>()V

    new-instance v2, Landroid/content/ComponentName;

    invoke-static {}, Lcom/evernote/android/job/GcmAvailableHelper;->a()Ljava/lang/String;

    move-result-object v3

    invoke-direct {v2, p0, v3}, Landroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/String;)V

    invoke-virtual {v1, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;

    invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object v2

    const/4 v3, 0x0

    invoke-virtual {v2, v1, v3}, Landroid/content/pm/PackageManager;->queryIntentServices(Landroid/content/Intent;I)Ljava/util/List;

    move-result-object v1

    invoke-static {v1}, Lcom/evernote/android/job/GcmAvailableHelper;->b(Ljava/util/List;)Z

    move-result v1

    const/4 v2, 0x1

    if-nez v1, :cond_30

    sput v2, Lcom/evernote/android/job/GcmAvailableHelper;->c:I

    monitor-exit v0

    return v2

    :cond_30
    new-instance v1, Landroid/content/Intent;

    const-string v4, "com.google.android.gms.gcm.ACTION_TASK_READY"

    invoke-direct {v1, v4}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V

    invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v1, v4}, Landroid/content/Intent;->setPackage(Ljava/lang/String;)Landroid/content/Intent;

    invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object p0

    invoke-virtual {p0, v1, v3}, Landroid/content/pm/PackageManager;->queryIntentServices(Landroid/content/Intent;I)Ljava/util/List;

    move-result-object p0

    invoke-static {p0}, Lcom/evernote/android/job/GcmAvailableHelper;->b(Ljava/util/List;)Z

    move-result p0

    if-nez p0, :cond_50

    sput v2, Lcom/evernote/android/job/GcmAvailableHelper;->c:I

    monitor-exit v0

    return v2

    :cond_50
    sput v3, Lcom/evernote/android/job/GcmAvailableHelper;->c:I

    :cond_52
    monitor-exit v0

    goto :goto_57

    :catchall_54
    move-exception p0

    monitor-exit v0
    :try_end_56
    .catchall {:try_start_7 .. :try_end_56} :catchall_54

    throw p0

    :cond_57
    :goto_57
    sget p0, Lcom/evernote/android/job/GcmAvailableHelper;->c:I

    return p0
.end method

.method private static e(Landroid/content/Context;Z)V
    .registers 6

    :try_start_0
    invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object v0

    new-instance v1, Landroid/content/ComponentName;

    invoke-static {}, Lcom/evernote/android/job/GcmAvailableHelper;->a()Ljava/lang/String;

    move-result-object v2

    invoke-direct {v1, p0, v2}, Landroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/String;)V

    invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->getComponentEnabledSetting(Landroid/content/ComponentName;)I

    move-result p0

    const/4 v2, 0x1

    if-eqz p0, :cond_27

    const/4 v3, 0x2

    if-eq p0, v2, :cond_1a

    if-eq p0, v3, :cond_27

    goto :goto_33

    :cond_1a
    if-nez p1, :cond_33

    invoke-virtual {v0, v1, v3, v2}, Landroid/content/pm/PackageManager;->setComponentEnabledSetting(Landroid/content/ComponentName;II)V

    sget-object p0, Lcom/evernote/android/job/GcmAvailableHelper;->a:Lcom/evernote/android/job/util/JobCat;

    const-string p1, "GCM service disabled"

    invoke-virtual {p0, p1}, Lcom/evernote/android/job/util/JobCat;->h(Ljava/lang/String;)V

    goto :goto_33

    :cond_27
    if-eqz p1, :cond_33

    invoke-virtual {v0, v1, v2, v2}, Landroid/content/pm/PackageManager;->setComponentEnabledSetting(Landroid/content/ComponentName;II)V

    sget-object p0, Lcom/evernote/android/job/GcmAvailableHelper;->a:Lcom/evernote/android/job/util/JobCat;

    const-string p1, "GCM service enabled"

    invoke-virtual {p0, p1}, Lcom/evernote/android/job/util/JobCat;->h(Ljava/lang/String;)V
    :try_end_33
    .catchall {:try_start_0 .. :try_end_33} :catchall_33

    :catchall_33
    :cond_33
    :goto_33
    return-void
.end method