.class public Lcom/helpshift/core/AndroidDevice; .super Ljava/lang/Object; .source "SourceFile" # interfaces .implements Lcom/helpshift/platform/Device; # instance fields .field public final context:Landroid/content/Context; .field public persistentStorage:Lcom/helpshift/storage/HSPersistentStorage; # direct methods .method public constructor (Landroid/content/Context;Lcom/helpshift/storage/HSPersistentStorage;)V .locals 0 .line 44 invoke-direct {p0}, Ljava/lang/Object;->()V iput-object p1, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; iput-object p2, p0, Lcom/helpshift/core/AndroidDevice;->persistentStorage:Lcom/helpshift/storage/HSPersistentStorage; return-void .end method # virtual methods .method public encodeBase64(Ljava/lang/String;)Ljava/lang/String; .locals 1 .line 265 invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B move-result-object p1 const/4 v0, 0x2 invoke-static {p1, v0}, Landroid/util/Base64;->encodeToString([BI)Ljava/lang/String; move-result-object p1 return-object p1 .end method .method public getAppIdentifier()Ljava/lang/String; .locals 1 iget-object v0, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; .line 94 invoke-virtual {v0}, Landroid/content/Context;->getPackageName()Ljava/lang/String; move-result-object v0 return-object v0 .end method .method public getAppName()Ljava/lang/String; .locals 3 :try_start_0 iget-object v0, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; .line 76 invoke-virtual {v0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; move-result-object v0 iget-object v1, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; .line 77 invoke-virtual {v1}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; move-result-object v1 .line 78 invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; move-result-object v0 invoke-interface {v0}, Ljava/lang/CharSequence;->toString()Ljava/lang/String; move-result-object v0 :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 :catch_0 move-exception v0 const-string v1, "Device" const-string v2, "Error getting application name" .line 81 invoke-static {v1, v2, v0}, Lcom/helpshift/log/HSLogger;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V const/4 v0, 0x0 :goto_0 if-nez v0, :cond_0 const-string v0, "Support" :cond_0 return-object v0 .end method .method public getAppVersion()Ljava/lang/String; .locals 3 .line 61 :try_start_0 invoke-virtual {p0}, Lcom/helpshift/core/AndroidDevice;->getAppIdentifier()Ljava/lang/String; move-result-object v0 iget-object v1, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; .line 62 invoke-virtual {v1}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; move-result-object v1 const/4 v2, 0x0 invoke-virtual {v1, v0, v2}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; move-result-object v0 .line 63 iget-object v0, v0, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String; :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 :catch_0 move-exception v0 const-string v1, "Device" const-string v2, "Error getting app version" .line 66 invoke-static {v1, v2, v0}, Lcom/helpshift/log/HSLogger;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V const/4 v0, 0x0 :goto_0 return-object v0 .end method .method public getBatteryLevel()Ljava/lang/String; .locals 4 .line 106 new-instance v0, Landroid/content/IntentFilter; const-string v1, "android.intent.action.BATTERY_CHANGED" invoke-direct {v0, v1}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V iget-object v1, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; const/4 v2, 0x0 .line 107 invoke-virtual {v1, v2, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; move-result-object v0 if-nez v0, :cond_0 const-string v0, "" return-object v0 :cond_0 const-string v1, "level" const/4 v2, -0x1 .line 113 invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v1 const-string v3, "scale" .line 114 invoke-virtual {v0, v3, v2}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v0 int-to-float v1, v1 int-to-float v0, v0 div-float/2addr v1, v0 const/high16 v0, 0x42c80000 # 100.0f mul-float/2addr v1, v0 float-to-int v0, v1 .line 116 new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; const-string v0, "%" invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 .end method .method public getBatteryStatus()Ljava/lang/String; .locals 4 .line 122 new-instance v0, Landroid/content/IntentFilter; const-string v1, "android.intent.action.BATTERY_CHANGED" invoke-direct {v0, v1}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V iget-object v1, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; const/4 v2, 0x0 .line 123 invoke-virtual {v1, v2, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; move-result-object v0 const-string v1, "Not charging" if-nez v0, :cond_0 return-object v1 :cond_0 const-string v2, "status" const/4 v3, -0x1 .line 129 invoke-virtual {v0, v2, v3}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I move-result v0 const/4 v2, 0x2 if-eq v0, v2, :cond_1 const/4 v2, 0x5 if-ne v0, v2, :cond_2 :cond_1 const-string v1, "Charging" :cond_2 return-object v1 .end method .method public getCarrierName()Ljava/lang/String; .locals 2 iget-object v0, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; const-string v1, "phone" .line 179 invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v0 check-cast v0, Landroid/telephony/TelephonyManager; if-nez v0, :cond_0 const-string v0, "" goto :goto_0 .line 180 :cond_0 invoke-virtual {v0}, Landroid/telephony/TelephonyManager;->getNetworkOperatorName()Ljava/lang/String; move-result-object v0 :goto_0 return-object v0 .end method .method public getCountryCode()Ljava/lang/String; .locals 2 iget-object v0, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; const-string v1, "phone" .line 209 invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v0 check-cast v0, Landroid/telephony/TelephonyManager; if-nez v0, :cond_0 const-string v0, "" goto :goto_0 .line 210 :cond_0 invoke-virtual {v0}, Landroid/telephony/TelephonyManager;->getSimCountryIso()Ljava/lang/String; move-result-object v0 :goto_0 return-object v0 .end method .method public getDeviceId()Ljava/lang/String; .locals 2 iget-object v0, p0, Lcom/helpshift/core/AndroidDevice;->persistentStorage:Lcom/helpshift/storage/HSPersistentStorage; .line 276 invoke-virtual {v0}, Lcom/helpshift/storage/HSPersistentStorage;->getHsDeviceId()Ljava/lang/String; move-result-object v0 .line 277 invoke-static {v0}, Lcom/helpshift/util/Utils;->isEmpty(Ljava/lang/String;)Z move-result v1 if-eqz v1, :cond_0 .line 278 invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID; move-result-object v0 invoke-virtual {v0}, Ljava/util/UUID;->toString()Ljava/lang/String; move-result-object v0 iget-object v1, p0, Lcom/helpshift/core/AndroidDevice;->persistentStorage:Lcom/helpshift/storage/HSPersistentStorage; .line 279 invoke-virtual {v1, v0}, Lcom/helpshift/storage/HSPersistentStorage;->setHsDeviceId(Ljava/lang/String;)V :cond_0 return-object v0 .end method .method public getDeviceModel()Ljava/lang/String; .locals 1 .line 100 sget-object v0, Landroid/os/Build;->MODEL:Ljava/lang/String; return-object v0 .end method .method public getDiskSpace()Lcom/helpshift/util/ValuePair; .locals 11 .line 141 new-instance v0, Landroid/os/StatFs; invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File; move-result-object v1 invoke-virtual {v1}, Ljava/io/File;->getPath()Ljava/lang/String; move-result-object v1 invoke-direct {v0, v1}, Landroid/os/StatFs;->(Ljava/lang/String;)V .line 143 invoke-virtual {v0}, Landroid/os/StatFs;->getAvailableBlocksLong()J move-result-wide v1 long-to-double v1, v1 .line 144 invoke-virtual {v0}, Landroid/os/StatFs;->getBlockSizeLong()J move-result-wide v3 long-to-double v3, v3 mul-double/2addr v1, v3 const-wide/high16 v3, 0x41d0000000000000L # 1.073741824E9 div-double/2addr v1, v3 const-wide/high16 v5, 0x4059000000000000L # 100.0 mul-double/2addr v1, v5 .line 145 invoke-static {v1, v2}, Ljava/lang/Math;->round(D)J move-result-wide v1 long-to-double v1, v1 div-double/2addr v1, v5 .line 147 invoke-virtual {v0}, Landroid/os/StatFs;->getBlockCountLong()J move-result-wide v7 long-to-double v7, v7 .line 148 invoke-virtual {v0}, Landroid/os/StatFs;->getBlockSizeLong()J move-result-wide v9 long-to-double v9, v9 mul-double/2addr v7, v9 div-double/2addr v7, v3 mul-double/2addr v7, v5 .line 149 invoke-static {v7, v8}, Ljava/lang/Math;->round(D)J move-result-wide v3 long-to-double v3, v3 div-double/2addr v3, v5 .line 161 new-instance v0, Lcom/helpshift/util/ValuePair; new-instance v5, Ljava/lang/StringBuilder; invoke-direct {v5}, Ljava/lang/StringBuilder;->()V invoke-virtual {v5, v3, v4}, Ljava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; const-string v3, " GB" 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 v4 new-instance v5, Ljava/lang/StringBuilder; invoke-direct {v5}, Ljava/lang/StringBuilder;->()V invoke-virtual {v5, v1, v2}, Ljava/lang/StringBuilder;->append(D)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 v1 invoke-direct {v0, v4, v1}, Lcom/helpshift/util/ValuePair;->(Ljava/lang/Object;Ljava/lang/Object;)V return-object v0 .end method .method public getLanguage()Ljava/lang/String; .locals 3 :try_start_0 sget v0, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v1, 0x21 if-lt v0, v1, :cond_1 iget-object v0, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; .line 229 invoke-static {}, Lcom/helpshift/core/AndroidDevice$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/Class; move-result-object v1 invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object; move-result-object v0 invoke-static {v0}, Lcom/helpshift/core/AndroidDevice$$ExternalSyntheticApiModelOutline1;->m(Ljava/lang/Object;)Landroid/app/LocaleManager; move-result-object v0 .line 230 invoke-static {v0}, Lcom/helpshift/core/AndroidDevice$$ExternalSyntheticApiModelOutline2;->m(Landroid/app/LocaleManager;)Landroid/os/LocaleList; move-result-object v0 if-eqz v0, :cond_0 .line 231 invoke-virtual {v0}, Landroid/os/LocaleList;->isEmpty()Z move-result v1 if-nez v1, :cond_0 const/4 v1, 0x0 .line 232 invoke-virtual {v0, v1}, Landroid/os/LocaleList;->get(I)Ljava/util/Locale; move-result-object v0 invoke-virtual {v0}, Ljava/util/Locale;->toLanguageTag()Ljava/lang/String; move-result-object v0 goto :goto_1 :catch_0 move-exception v0 goto :goto_0 .line 234 :cond_0 invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale; move-result-object v0 invoke-virtual {v0}, Ljava/util/Locale;->toLanguageTag()Ljava/lang/String; move-result-object v0 goto :goto_1 .line 237 :cond_1 invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale; move-result-object v0 invoke-virtual {v0}, Ljava/util/Locale;->toLanguageTag()Ljava/lang/String; move-result-object v0 :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_1 :goto_0 const-string v1, "Device" const-string v2, "Error getting app language" .line 242 invoke-static {v1, v2, v0}, Lcom/helpshift/log/HSLogger;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V const-string v0, "unknown" :goto_1 return-object v0 .end method .method public getNetworkType()Ljava/lang/String; .locals 3 const/4 v0, 0x0 :try_start_0 iget-object v1, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; const-string v2, "connectivity" .line 188 invoke-virtual {v1, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v1 check-cast v1, Landroid/net/ConnectivityManager; if-eqz v1, :cond_0 .line 190 invoke-virtual {v1}, Landroid/net/ConnectivityManager;->getActiveNetworkInfo()Landroid/net/NetworkInfo; move-result-object v1 if-eqz v1, :cond_0 .line 192 invoke-virtual {v1}, Landroid/net/NetworkInfo;->getTypeName()Ljava/lang/String; move-result-object v0 :try_end_0 .catch Ljava/lang/SecurityException; {:try_start_0 .. :try_end_0} :catch_0 :catch_0 :cond_0 if-nez v0, :cond_1 const-string v0, "Unknown" :cond_1 return-object v0 .end method .method public getOSVersion()Ljava/lang/String; .locals 1 .line 173 sget-object v0, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String; return-object v0 .end method .method public getOsType()Ljava/lang/String; .locals 1 const-string v0, "android" return-object v0 .end method .method public getRom()Ljava/lang/String; .locals 2 .line 216 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V const-string v1, "os.version" invoke-static {v1}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; const-string v1, ":" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; sget-object v1, Landroid/os/Build;->FINGERPRINT:Ljava/lang/String; 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 public getSDKVersion()Ljava/lang/String; .locals 1 const-string v0, "10.2.2" return-object v0 .end method .method public isOnline()Z .locals 4 const/4 v0, 0x0 :try_start_0 iget-object v1, p0, Lcom/helpshift/core/AndroidDevice;->context:Landroid/content/Context; const-string v2, "connectivity" .line 253 invoke-virtual {v1, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object v1 check-cast v1, Landroid/net/ConnectivityManager; .line 254 invoke-virtual {v1}, Landroid/net/ConnectivityManager;->getActiveNetworkInfo()Landroid/net/NetworkInfo; move-result-object v1 if-eqz v1, :cond_0 .line 255 invoke-virtual {v1}, Landroid/net/NetworkInfo;->isConnected()Z move-result v1 :try_end_0 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 if-eqz v1, :cond_0 const/4 v0, 0x1 goto :goto_0 :catch_0 move-exception v1 const-string v2, "Device" const-string v3, "Exception while getting system connectivity service" .line 258 invoke-static {v2, v3, v1}, Lcom/helpshift/log/HSLogger;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V :cond_0 :goto_0 return v0 .end method