PermissionCheckUtil.smali
.class public Lio/rong/imkit/utilities/PermissionCheckUtil;
.super Ljava/lang/Object;
.source "PermissionCheckUtil.java"
# static fields
.field private static final TAG:Ljava/lang/String; = "PermissionCheckUtil"
# direct methods
.method static constructor <clinit>()V
.registers 0
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static canDrawOverlays(Landroid/content/Context;)Z
.registers 2
.annotation build Landroid/annotation/TargetApi;
value = 0x13
.end annotation
const/4 v0, 0x1
.line 1
invoke-static {p0, v0}, Lio/rong/imkit/utilities/PermissionCheckUtil;->canDrawOverlays(Landroid/content/Context;Z)Z
move-result p0
return p0
.end method
.method public static canDrawOverlays(Landroid/content/Context;Z)Z
.registers 12
.annotation build Landroid/annotation/TargetApi;
value = 0x13
.end annotation
.line 2
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const-string v1, "isFloatWindowOpAllowed allowed: "
const/4 v2, 0x0
const/4 v3, 0x2
const/4 v4, 0x0
const/4 v5, 0x1
const/16 v6, 0x17
if-lt v0, v6, :cond_8b
.line 3
:try_start_c
const-class v0, Landroid/provider/Settings;
new-array v6, v5, [Ljava/lang/Class;
const-class v7, Landroid/content/Context;
aput-object v7, v6, v4
:try_end_14
.catch Ljava/lang/Exception; {:try_start_c .. :try_end_14} :catch_6c
const-string v7, "canDrawOverlays"
:try_start_16
invoke-virtual {v0, v7, v6}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
new-array v6, v5, [Ljava/lang/Object;
aput-object p0, v6, v4
invoke-virtual {v0, v2, v6}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Boolean;
invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
if-nez v0, :cond_57
if-eqz p1, :cond_57
.line 4
new-instance p1, Ljava/util/ArrayList;
invoke-direct {p1}, Ljava/util/ArrayList;-><init>()V
const-string v2, "android.settings.action.MANAGE_OVERLAY_PERMISSION"
.line 5
invoke-virtual {p1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 6
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
sget v6, Lio/rong/imkit/R$string;->rc_permission_grant_needed:I
invoke-virtual {p0, v6}, Landroid/content/Context;->getString(I)Ljava/lang/String;
move-result-object v6
invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-static {p0, p1}, Lio/rong/imkit/utilities/PermissionCheckUtil;->getNotGrantedPermissionMsg(Landroid/content/Context;Ljava/util/List;)Ljava/lang/String;
move-result-object p1
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
new-instance v2, Lio/rong/imkit/utilities/PermissionCheckUtil$2;
invoke-direct {v2, p0}, Lio/rong/imkit/utilities/PermissionCheckUtil$2;-><init>(Landroid/content/Context;)V
invoke-static {p0, p1, v2}, Lio/rong/imkit/utilities/PermissionCheckUtil;->showPermissionAlert(Landroid/content/Context;Ljava/lang/String;Landroid/content/DialogInterface$OnClickListener;)V
.line 7
:cond_57
sget-object p0, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {p0, p1}, Lio/rong/common/RLog;->i(Ljava/lang/String;Ljava/lang/String;)I
:try_end_6b
.catch Ljava/lang/Exception; {:try_start_16 .. :try_end_6b} :catch_6c
return v0
:catch_6c
move-exception p0
.line 8
sget-object p1, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-array v0, v3, [Ljava/lang/Object;
invoke-virtual {p0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v1
aput-object v1, v0, v4
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/Class;->getCanonicalName()Ljava/lang/String;
move-result-object p0
aput-object p0, v0, v5
const-string p0, "getDeclaredMethod:canDrawOverlays! Error:%s, etype:%s"
invoke-static {p0, v0}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
invoke-static {p1, p0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
return v5
:cond_8b
const/16 p1, 0x13
if-ge v0, p1, :cond_90
return v5
:cond_90
const-string p1, "appops"
.line 9
invoke-virtual {p0, p1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object p1
const-string v0, "android.app.AppOpsManager"
const/4 v6, 0x3
.line 10
:try_start_99
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
const-string v7, "checkOp"
new-array v8, v6, [Ljava/lang/Class;
sget-object v9, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
aput-object v9, v8, v4
sget-object v9, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
aput-object v9, v8, v5
const-class v9, Ljava/lang/String;
aput-object v9, v8, v3
invoke-virtual {v0, v7, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v2
:try_end_b1
.catch Ljava/lang/NoSuchMethodException; {:try_start_99 .. :try_end_b1} :catch_bb
.catch Ljava/lang/ClassNotFoundException; {:try_start_99 .. :try_end_b1} :catch_b2
goto :goto_cf
:catch_b2
move-exception v0
.line 11
sget-object v7, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
const-string v8, "canDrawOverlays"
invoke-static {v7, v8, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
goto :goto_cf
:catch_bb
move-exception v0
.line 12
sget-object v7, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-array v8, v5, [Ljava/lang/Object;
invoke-virtual {v0}, Ljava/lang/NoSuchMethodException;->getMessage()Ljava/lang/String;
move-result-object v0
aput-object v0, v8, v4
const-string v0, "NoSuchMethodException method:checkOp! Error:%s"
invoke-static {v0, v8}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
invoke-static {v7, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
:goto_cf
if-eqz v2, :cond_11c
.line 13
:try_start_d1
new-array v0, v6, [Ljava/lang/Object;
const/16 v6, 0x18
invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v6
aput-object v6, v0, v4
invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
move-result-object v6
iget v6, v6, Landroid/content/pm/ApplicationInfo;->uid:I
invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v6
aput-object v6, v0, v5
invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object p0
aput-object p0, v0, v3
invoke-virtual {v2, p1, v0}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/lang/Integer;
if-eqz p0, :cond_fc
.line 14
invoke-virtual {p0}, Ljava/lang/Integer;->intValue()I
move-result p0
:try_end_f9
.catch Ljava/lang/Exception; {:try_start_d1 .. :try_end_f9} :catch_fe
if-nez p0, :cond_fc
goto :goto_11c
:cond_fc
const/4 v5, 0x0
goto :goto_11c
:catch_fe
move-exception p0
.line 15
sget-object p1, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-array v0, v3, [Ljava/lang/Object;
invoke-virtual {p0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v2
aput-object v2, v0, v4
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/Class;->getCanonicalName()Ljava/lang/String;
move-result-object p0
aput-object p0, v0, v5
const-string p0, "call checkOp failed: %s etype:%s"
invoke-static {p0, v0}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
invoke-static {p1, p0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 16
:cond_11c
:goto_11c
sget-object p0, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v5}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {p0, p1}, Lio/rong/common/RLog;->i(Ljava/lang/String;Ljava/lang/String;)I
return v5
.end method
.method public static checkPermissions(Landroid/content/Context;[Ljava/lang/String;)Z
.registers 10
.line 1
array-length v0, p1
const/4 v1, 0x1
if-nez v0, :cond_5
return v1
.line 2
:cond_5
array-length v0, p1
const/4 v2, 0x0
const/4 v3, 0x0
:goto_8
if-ge v3, v0, :cond_66
aget-object v4, p1, v3
.line 3
invoke-static {}, Lio/rong/imkit/utilities/PermissionCheckUtil;->isFlyme()Z
move-result v5
if-nez v5, :cond_18
sget v5, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v6, 0x17
if-ge v5, v6, :cond_5c
:cond_18
const-string v5, "android.permission.RECORD_AUDIO"
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_5c
.line 4
sget-object v5, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, "Build.MODEL = "
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v7, Landroid/os/Build;->MODEL:Ljava/lang/String;
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
invoke-static {v5, v6}, Lio/rong/common/RLog;->i(Ljava/lang/String;Ljava/lang/String;)I
.line 5
sget-object v5, Landroid/os/Build;->BRAND:Ljava/lang/String;
invoke-virtual {v5}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
move-result-object v5
const-string v6, "meizu"
invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_55
sget-object v5, Landroid/os/Build;->MODEL:Ljava/lang/String;
const-string v6, "M1852"
invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_55
.line 6
invoke-static {p0, v4}, Lio/rong/imkit/utilities/PermissionCheckUtil;->hasPermission(Landroid/content/Context;Ljava/lang/String;)Z
move-result p0
return p0
.line 7
:cond_55
invoke-static {p0}, Lio/rong/imkit/utilities/PermissionCheckUtil;->hasRecordPermision(Landroid/content/Context;)Z
move-result v4
if-nez v4, :cond_63
return v2
.line 8
:cond_5c
invoke-static {p0, v4}, Lio/rong/imkit/utilities/PermissionCheckUtil;->hasPermission(Landroid/content/Context;Ljava/lang/String;)Z
move-result v4
if-nez v4, :cond_63
return v2
:cond_63
add-int/lit8 v3, v3, 0x1
goto :goto_8
:cond_66
return v1
.end method
.method private static getNotGrantedPermissionMsg(Landroid/content/Context;Ljava/util/List;)Ljava/lang/String;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/content/Context;",
"Ljava/util/List<",
"Ljava/lang/String;",
">;)",
"Ljava/lang/String;"
}
.end annotation
const-string v0, ""
if-eqz p1, :cond_af
.line 14
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v1
if-nez v1, :cond_c
goto/16 :goto_af
.line 15
:cond_c
new-instance v1, Ljava/util/HashSet;
invoke-direct {v1}, Ljava/util/HashSet;-><init>()V
.line 16
:try_start_11
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_15
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_52
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/String;
.line 17
invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
move-result-object v4
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
const-string v6, "rc_"
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
const-string v5, "string"
invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v6
invoke-virtual {v4, v3, v5, v6}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
move-result v3
const/4 v4, 0x1
new-array v4, v4, [Ljava/lang/Object;
const/4 v5, 0x0
invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v6
aput-object v6, v4, v5
invoke-virtual {p0, v3, v4}, Landroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v3
.line 18
invoke-interface {v1, v3}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
:try_end_51
.catch Landroid/content/res/Resources$NotFoundException; {:try_start_11 .. :try_end_51} :catch_95
goto :goto_15
.line 19
:cond_52
new-instance p0, Ljava/lang/StringBuilder;
const-string p1, "("
invoke-direct {p0, p1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 20
invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_5d
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_72
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 21
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v0, " "
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_5d
.line 22
:cond_72
new-instance p1, Ljava/lang/StringBuilder;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object p0
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p0, ")"
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-direct {p1, p0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 23
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.line 24
:catch_95
sget-object p0, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "one of the permissions is not recognized by SDK."
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {p0, p1}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
:cond_af
:goto_af
return-object v0
.end method
.method public static getNotGrantedPermissionMsg(Landroid/content/Context;[Ljava/lang/String;[I)Ljava/lang/String;
.registers 11
const-string v0, ""
if-eqz p1, :cond_8b
.line 1
array-length v1, p1
if-nez v1, :cond_9
goto/16 :goto_8b
.line 2
:cond_9
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
.line 3
invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
move-result-object v2
sget v3, Lio/rong/imkit/R$string;->rc_permission_grant_needed:I
invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v2, "("
.line 4
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const/4 v2, 0x0
const/4 v3, 0x0
.line 5
:goto_22
:try_start_22
array-length v4, p1
if-ge v3, v4, :cond_67
.line 6
aget v4, p2, v3
const/4 v5, -0x1
if-ne v4, v5, :cond_64
.line 7
invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
move-result-object v4
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
const-string v6, "rc_"
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aget-object v6, p1, v3
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
const-string v6, "string"
invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v7
invoke-virtual {v4, v5, v6, v7}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
move-result v4
const/4 v5, 0x1
new-array v6, v5, [Ljava/lang/Object;
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v7
aput-object v7, v6, v2
invoke-virtual {p0, v4, v6}, Landroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v4
.line 8
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 9
array-length v4, p1
sub-int/2addr v4, v5
if-eq v3, v4, :cond_64
const-string v4, " "
.line 10
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
:try_end_64
.catch Landroid/content/res/Resources$NotFoundException; {:try_start_22 .. :try_end_64} :catch_71
:cond_64
add-int/lit8 v3, v3, 0x1
goto :goto_22
:cond_67
const-string p0, ")"
.line 11
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 12
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.line 13
:catch_71
sget-object p0, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "One of the permissions is not recognized by SDK."
invoke-virtual {p2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-static {p1}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {p0, p1}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
:cond_8b
:goto_8b
return-object v0
.end method
.method private static hasPermission(Landroid/content/Context;Ljava/lang/String;)Z
.registers 4
.line 1
invoke-static {p1}, Landroidx/core/app/h;->a(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
const/4 v1, 0x1
if-nez v0, :cond_8
return v1
:cond_8
const/4 v0, 0x0
if-nez p0, :cond_c
goto :goto_13
.line 2
:cond_c
invoke-virtual {p0, p1}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
move-result p0
if-nez p0, :cond_13
const/4 v0, 0x1
:cond_13
:goto_13
return v0
.end method
.method private static hasRecordPermision(Landroid/content/Context;)Z
.registers 10
const p0, 0xac44
const/16 v0, 0xc
const/4 v1, 0x2
.line 1
invoke-static {p0, v0, v1}, Landroid/media/AudioRecord;->getMinBufferSize(III)I
move-result v7
const/4 p0, 0x0
if-gez v7, :cond_24
.line 2
sget-object v0, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "bufferSizeInBytes = "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
return p0
:cond_24
const/4 v0, 0x0
.line 3
:try_start_25
new-instance v1, Landroid/media/AudioRecord;
const/4 v3, 0x1
const v4, 0xac44
const/16 v5, 0xc
const/4 v6, 0x2
move-object v2, v1
invoke-direct/range {v2 .. v7}, Landroid/media/AudioRecord;-><init>(IIIII)V
:try_end_32
.catch Ljava/lang/Exception; {:try_start_25 .. :try_end_32} :catch_3c
.line 4
:try_start_32
invoke-virtual {v1}, Landroid/media/AudioRecord;->startRecording()V
:try_end_35
.catch Ljava/lang/Exception; {:try_start_32 .. :try_end_35} :catch_37
move-object v0, v1
goto :goto_44
:catch_37
move-exception v0
move-object v8, v1
move-object v1, v0
move-object v0, v8
goto :goto_3d
:catch_3c
move-exception v1
.line 5
:goto_3d
sget-object v2, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
const-string v3, "hasRecordPermision"
invoke-static {v2, v3, v1}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
:goto_44
if-nez v0, :cond_4e
.line 6
sget-object v0, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
const-string v1, "audioRecord is null"
invoke-static {v0, v1}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
return p0
.line 7
:cond_4e
invoke-virtual {v0}, Landroid/media/AudioRecord;->getRecordingState()I
move-result v1
const/4 v2, 0x3
if-ne v1, v2, :cond_59
.line 8
invoke-virtual {v0}, Landroid/media/AudioRecord;->stop()V
const/4 p0, 0x1
.line 9
:cond_59
invoke-virtual {v0}, Landroid/media/AudioRecord;->release()V
return p0
.end method
.method private static isFlyme()Z
.registers 8
const-string v0, ""
const-string v1, "android.os.SystemProperties"
const/4 v2, 0x1
const/4 v3, 0x0
.line 1
:try_start_6
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
const-string v4, "get"
const/4 v5, 0x2
.line 2
new-array v6, v5, [Ljava/lang/Class;
const-class v7, Ljava/lang/String;
aput-object v7, v6, v3
const-class v7, Ljava/lang/String;
aput-object v7, v6, v2
invoke-virtual {v1, v4, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v4
.line 3
new-array v5, v5, [Ljava/lang/Object;
const-string v6, "ro.build.display.id"
aput-object v6, v5, v3
aput-object v0, v5, v2
invoke-virtual {v4, v1, v5}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
:try_end_29
.catch Ljava/lang/Exception; {:try_start_6 .. :try_end_29} :catch_2b
move-object v0, v1
goto :goto_33
:catch_2b
move-exception v1
.line 4
sget-object v4, Lio/rong/imkit/utilities/PermissionCheckUtil;->TAG:Ljava/lang/String;
const-string v5, "isFlyme"
invoke-static {v4, v5, v1}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
:goto_33
if-eqz v0, :cond_42
.line 5
invoke-virtual {v0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
move-result-object v0
const-string v1, "flyme"
invoke-virtual {v0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_42
goto :goto_43
:cond_42
const/4 v2, 0x0
:goto_43
return v2
.end method
.method public static requestPermissions(Landroid/app/Activity;[Ljava/lang/String;)Z
.registers 3
const/4 v0, 0x0
.line 13
invoke-static {p0, p1, v0}, Lio/rong/imkit/utilities/PermissionCheckUtil;->requestPermissions(Landroid/app/Activity;[Ljava/lang/String;I)Z
move-result p0
return p0
.end method
.method public static requestPermissions(Landroid/app/Activity;[Ljava/lang/String;I)Z
.registers 10
.annotation build Landroid/annotation/TargetApi;
value = 0x17
.end annotation
.line 14
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/4 v1, 0x1
const/16 v2, 0x17
if-ge v0, v2, :cond_8
return v1
.line 15
:cond_8
array-length v0, p1
if-nez v0, :cond_c
return v1
.line 16
:cond_c
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 17
array-length v2, p1
const/4 v3, 0x0
const/4 v4, 0x0
:goto_14
if-ge v4, v2, :cond_24
aget-object v5, p1, v4
.line 18
invoke-static {p0, v5}, Lio/rong/imkit/utilities/PermissionCheckUtil;->hasPermission(Landroid/content/Context;Ljava/lang/String;)Z
move-result v6
if-nez v6, :cond_21
.line 19
invoke-interface {v0, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
:cond_21
add-int/lit8 v4, v4, 0x1
goto :goto_14
.line 20
:cond_24
invoke-interface {v0}, Ljava/util/List;->size()I
move-result p1
if-lez p1, :cond_3a
.line 21
invoke-interface {v0}, Ljava/util/List;->size()I
move-result p1
.line 22
new-array p1, p1, [Ljava/lang/String;
invoke-interface {v0, p1}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object p1
check-cast p1, [Ljava/lang/String;
invoke-virtual {p0, p1, p2}, Landroid/app/Activity;->requestPermissions([Ljava/lang/String;I)V
const/4 v1, 0x0
:cond_3a
return v1
.end method
.method public static requestPermissions(Landroidx/fragment/app/Fragment;[Ljava/lang/String;)Z
.registers 3
const/4 v0, 0x0
.line 1
invoke-static {p0, p1, v0}, Lio/rong/imkit/utilities/PermissionCheckUtil;->requestPermissions(Landroidx/fragment/app/Fragment;[Ljava/lang/String;I)Z
move-result p0
return p0
.end method
.method public static requestPermissions(Landroidx/fragment/app/Fragment;[Ljava/lang/String;I)Z
.registers 11
.line 2
array-length v0, p1
const/4 v1, 0x1
if-eqz v0, :cond_7f
invoke-virtual {p0}, Landroidx/fragment/app/Fragment;->getActivity()Landroidx/fragment/app/FragmentActivity;
move-result-object v0
if-eqz v0, :cond_7f
.line 3
invoke-virtual {p0}, Landroidx/fragment/app/Fragment;->isDetached()Z
move-result v0
if-eqz v0, :cond_11
goto :goto_7f
.line 4
:cond_11
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 5
array-length v2, p1
const/4 v3, 0x0
const/4 v4, 0x0
:goto_19
if-ge v4, v2, :cond_69
aget-object v5, p1, v4
.line 6
invoke-static {}, Lio/rong/imkit/utilities/PermissionCheckUtil;->isFlyme()Z
move-result v6
if-nez v6, :cond_29
sget v6, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v7, 0x17
if-ge v6, v7, :cond_59
:cond_29
const-string v6, "android.permission.RECORD_AUDIO"
invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_59
.line 7
invoke-virtual {p0}, Landroidx/fragment/app/Fragment;->getContext()Landroid/content/Context;
move-result-object p1
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
sget v0, Lio/rong/imkit/R$string;->rc_permission_grant_needed:I
invoke-virtual {p0, v0}, Landroidx/fragment/app/Fragment;->getString(I)Ljava/lang/String;
move-result-object v0
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget v0, Lio/rong/imkit/R$string;->rc_permission_microphone:I
invoke-virtual {p0, v0}, Landroidx/fragment/app/Fragment;->getString(I)Ljava/lang/String;
move-result-object v0
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
new-instance v0, Lio/rong/imkit/utilities/PermissionCheckUtil$1;
invoke-direct {v0, p0}, Lio/rong/imkit/utilities/PermissionCheckUtil$1;-><init>(Landroidx/fragment/app/Fragment;)V
invoke-static {p1, p2, v0}, Lio/rong/imkit/utilities/PermissionCheckUtil;->showPermissionAlert(Landroid/content/Context;Ljava/lang/String;Landroid/content/DialogInterface$OnClickListener;)V
return v3
.line 8
:cond_59
invoke-virtual {p0}, Landroidx/fragment/app/Fragment;->getActivity()Landroidx/fragment/app/FragmentActivity;
move-result-object v6
invoke-static {v6, v5}, Lio/rong/imkit/utilities/PermissionCheckUtil;->hasPermission(Landroid/content/Context;Ljava/lang/String;)Z
move-result v6
if-nez v6, :cond_66
.line 9
invoke-interface {v0, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
:cond_66
add-int/lit8 v4, v4, 0x1
goto :goto_19
.line 10
:cond_69
invoke-interface {v0}, Ljava/util/List;->size()I
move-result p1
if-lez p1, :cond_7f
.line 11
invoke-interface {v0}, Ljava/util/List;->size()I
move-result p1
.line 12
new-array p1, p1, [Ljava/lang/String;
invoke-interface {v0, p1}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object p1
check-cast p1, [Ljava/lang/String;
invoke-virtual {p0, p1, p2}, Landroidx/fragment/app/Fragment;->requestPermissions([Ljava/lang/String;I)V
const/4 v1, 0x0
:cond_7f
:goto_7f
return v1
.end method
.method private static showPermissionAlert(Landroid/content/Context;Ljava/lang/String;Landroid/content/DialogInterface$OnClickListener;)V
.registers 4
.annotation build Landroid/annotation/TargetApi;
value = 0xb
.end annotation
.line 1
new-instance v0, Landroid/app/AlertDialog$Builder;
invoke-direct {v0, p0}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V
.line 2
invoke-virtual {v0, p1}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
move-result-object p0
sget p1, Lio/rong/imkit/R$string;->rc_confirm:I
.line 3
invoke-virtual {p0, p1, p2}, Landroid/app/AlertDialog$Builder;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object p0
sget p1, Lio/rong/imkit/R$string;->rc_cancel:I
.line 4
invoke-virtual {p0, p1, p2}, Landroid/app/AlertDialog$Builder;->setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object p0
const/4 p1, 0x0
.line 5
invoke-virtual {p0, p1}, Landroid/app/AlertDialog$Builder;->setCancelable(Z)Landroid/app/AlertDialog$Builder;
move-result-object p0
.line 6
invoke-virtual {p0}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
move-result-object p0
.line 7
invoke-virtual {p0}, Landroid/app/AlertDialog;->show()V
return-void
.end method
.method public static showRequestPermissionFailedAlter(Landroid/content/Context;Ljava/lang/String;)V
.registers 6
.line 1
invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_7
return-void
.line 2
:cond_7
new-instance v0, Lio/rong/imkit/utilities/PermissionCheckUtil$3;
invoke-direct {v0, p0}, Lio/rong/imkit/utilities/PermissionCheckUtil$3;-><init>(Landroid/content/Context;)V
.line 3
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v2, 0x15
const/4 v3, 0x0
if-lt v1, v2, :cond_37
.line 4
new-instance v1, Landroid/app/AlertDialog$Builder;
const v2, 0x103023a
invoke-direct {v1, p0, v2}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;I)V
.line 5
invoke-virtual {v1, p1}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
move-result-object p0
sget p1, Lio/rong/imkit/R$string;->rc_confirm:I
.line 6
invoke-virtual {p0, p1, v0}, Landroid/app/AlertDialog$Builder;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object p0
sget p1, Lio/rong/imkit/R$string;->rc_cancel:I
.line 7
invoke-virtual {p0, p1, v0}, Landroid/app/AlertDialog$Builder;->setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object p0
.line 8
invoke-virtual {p0, v3}, Landroid/app/AlertDialog$Builder;->setCancelable(Z)Landroid/app/AlertDialog$Builder;
move-result-object p0
.line 9
invoke-virtual {p0}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
move-result-object p0
.line 10
invoke-virtual {p0}, Landroid/app/AlertDialog;->show()V
goto :goto_57
.line 11
:cond_37
new-instance v1, Landroid/app/AlertDialog$Builder;
invoke-direct {v1, p0}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V
.line 12
invoke-virtual {v1, p1}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
move-result-object p0
sget p1, Lio/rong/imkit/R$string;->rc_confirm:I
.line 13
invoke-virtual {p0, p1, v0}, Landroid/app/AlertDialog$Builder;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object p0
sget p1, Lio/rong/imkit/R$string;->rc_cancel:I
.line 14
invoke-virtual {p0, p1, v0}, Landroid/app/AlertDialog$Builder;->setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
move-result-object p0
.line 15
invoke-virtual {p0, v3}, Landroid/app/AlertDialog$Builder;->setCancelable(Z)Landroid/app/AlertDialog$Builder;
move-result-object p0
.line 16
invoke-virtual {p0}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
move-result-object p0
.line 17
invoke-virtual {p0}, Landroid/app/AlertDialog;->show()V
:goto_57
return-void
.end method