Add Discord APKTool decompilation (Smali source for modding)

- Imported from https://github.com/supermegamestre/Project-Real-Resurrection-3
- APKTool decompilation (Smali bytecode) for modding and rebuilding APK
- Supports both 32-bit (armeabi-v7a) and 64-bit (arm64-v8a) architectures
- Includes full Smali source, resources, and native libraries
- Ready to rebuild APK after modifications with apktool b command
- Added comprehensive README-apktool.md with modding guide

This branch complements the JADX branches:
- Use JADX (main/discord-community) to UNDERSTAND code (readable Java)
- Use APKTool (this branch) to MODIFY and REBUILD APK (editable Smali)

Total: 44,417 files, 538.51 MB Smali source code
This commit is contained in:
2026-02-18 16:13:44 -08:00
parent c080f0d97f
commit f3960ee359
44288 changed files with 10998761 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,27 @@
.class public Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException;
.super Ljava/lang/Exception;
.source "SourceFile"
# static fields
.field private static final serialVersionUID:J = 0x1L
# direct methods
.method public constructor <init>()V
.locals 0
.line 24
invoke-direct {p0}, Ljava/lang/Exception;-><init>()V
return-void
.end method
.method public constructor <init>(Ljava/lang/String;)V
.locals 0
.line 28
invoke-direct {p0, p1}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
return-void
.end method

View File

@@ -0,0 +1,74 @@
.class public Lcom/firemonkeys/cloudcellapi/util/FacebookAccessToken;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field static final TAG:Ljava/lang/String; = "cloudcellapi.util.FacebookAccessToken"
# direct methods
.method public constructor <init>()V
.locals 0
.line 8
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static getFacebookAccessToken()Ljava/lang/String;
.locals 3
.line 22
invoke-static {}, Lcom/firemonkeys/cloudcellapi/CC_Component;->GetActivity()Landroid/app/Activity;
move-result-object v0
const/4 v1, 0x0
invoke-virtual {v0, v1}, Landroid/app/Activity;->getPreferences(I)Landroid/content/SharedPreferences;
move-result-object v0
const-string v1, "access_token"
const-string v2, ""
.line 23
invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public static setFacebookAccessToken(Ljava/lang/String;)V
.locals 2
.line 14
invoke-static {}, Lcom/firemonkeys/cloudcellapi/CC_Component;->GetActivity()Landroid/app/Activity;
move-result-object v0
const/4 v1, 0x0
invoke-virtual {v0, v1}, Landroid/app/Activity;->getPreferences(I)Landroid/content/SharedPreferences;
move-result-object v0
.line 15
invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
move-result-object v0
const-string v1, "access_token"
.line 16
invoke-interface {v0, v1, p0}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
.line 17
invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z
return-void
.end method

View File

@@ -0,0 +1,291 @@
.class Lcom/firemonkeys/cloudcellapi/util/GetInfo$1;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/firemonkeys/cloudcellapi/util/GetInfo;->Initialize(Landroid/app/Activity;)V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1
name = null
.end annotation
# instance fields
.field final synthetic val$activity:Landroid/app/Activity;
# direct methods
.method public constructor <init>(Landroid/app/Activity;)V
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"()V"
}
.end annotation
iput-object p1, p0, Lcom/firemonkeys/cloudcellapi/util/GetInfo$1;->val$activity:Landroid/app/Activity;
.line 62
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.locals 5
const-string v0, "Initialize()"
const-string v1, "GetInfo"
.line 66
invoke-static {v1, v0}, Lcom/firemonkeys/cloudcellapi/Logging;->CC_INFO(Ljava/lang/Object;Ljava/lang/String;)V
const/4 v0, 0x0
:goto_0
const/4 v2, 0x5
const/4 v3, 0x1
if-ge v0, v2, :cond_0
:try_start_0
iget-object v2, p0, Lcom/firemonkeys/cloudcellapi/util/GetInfo$1;->val$activity:Landroid/app/Activity;
.line 73
invoke-static {v2}, Lcom/google/android/gms/ads/identifier/AdvertisingIdClient;->getAdvertisingIdInfo(Landroid/content/Context;)Lcom/google/android/gms/ads/identifier/AdvertisingIdClient$Info;
move-result-object v2
.line 74
invoke-virtual {v2}, Lcom/google/android/gms/ads/identifier/AdvertisingIdClient$Info;->getId()Ljava/lang/String;
move-result-object v4
sput-object v4, Lcom/firemonkeys/cloudcellapi/util/GetInfo;->ms_sAdvertisingIdentifier:Ljava/lang/String;
.line 75
invoke-virtual {v2}, Lcom/google/android/gms/ads/identifier/AdvertisingIdClient$Info;->isLimitAdTrackingEnabled()Z
move-result v2
xor-int/2addr v2, v3
sput-boolean v2, Lcom/firemonkeys/cloudcellapi/util/GetInfo;->ms_bAdvertisingEnabled:Z
:try_end_0
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_3
.catch Lcom/google/android/gms/common/GooglePlayServicesRepairableException; {:try_start_0 .. :try_end_0} :catch_2
.catch Lcom/google/android/gms/common/GooglePlayServicesNotAvailableException; {:try_start_0 .. :try_end_0} :catch_1
.catch Ljava/lang/IllegalStateException; {:try_start_0 .. :try_end_0} :catch_0
goto/16 :goto_7
:catch_0
move-exception v2
goto :goto_1
:catch_1
move-exception v2
goto :goto_2
:catch_2
move-exception v2
goto :goto_3
:catch_3
move-exception v2
goto :goto_4
.line 98
:goto_1
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "IllegalStateException"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;
move-result-object v2
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/firemonkeys/cloudcellapi/Logging;->CC_ERROR(Ljava/lang/Object;Ljava/lang/String;)V
goto :goto_5
.line 93
:goto_2
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "GooglePlayServicesNotAvailableException"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;
move-result-object v2
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/firemonkeys/cloudcellapi/Logging;->CC_ERROR(Ljava/lang/Object;Ljava/lang/String;)V
goto :goto_5
.line 88
:goto_3
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "GooglePlayServicesRepairableException"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;
move-result-object v2
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/firemonkeys/cloudcellapi/Logging;->CC_ERROR(Ljava/lang/Object;Ljava/lang/String;)V
goto :goto_5
.line 83
:goto_4
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "IOException"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;
move-result-object v2
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/firemonkeys/cloudcellapi/Logging;->CC_ERROR(Ljava/lang/Object;Ljava/lang/String;)V
:goto_5
const-wide/16 v2, 0x3e8
.line 103
:try_start_1
invoke-static {v2, v3}, Ljava/lang/Thread;->sleep(J)V
:try_end_1
.catch Ljava/lang/InterruptedException; {:try_start_1 .. :try_end_1} :catch_4
goto :goto_6
:catch_4
move-exception v2
.line 107
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "InterruptedException"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;
move-result-object v2
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/firemonkeys/cloudcellapi/Logging;->CC_ERROR(Ljava/lang/Object;Ljava/lang/String;)V
:goto_6
add-int/lit8 v0, v0, 0x1
goto/16 :goto_0
.line 111
:cond_0
:goto_7
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "AdvertisingIdentifier: "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v2, Lcom/firemonkeys/cloudcellapi/util/GetInfo;->ms_sAdvertisingIdentifier:Ljava/lang/String;
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Lcom/firemonkeys/cloudcellapi/Logging;->CC_INFO(Ljava/lang/Object;Ljava/lang/String;)V
.line 112
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "AdvertisingEnabled: "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-boolean v2, Lcom/firemonkeys/cloudcellapi/util/GetInfo;->ms_bAdvertisingEnabled:Z
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Lcom/firemonkeys/cloudcellapi/Logging;->CC_INFO(Ljava/lang/Object;Ljava/lang/String;)V
.line 114
sput-boolean v3, Lcom/firemonkeys/cloudcellapi/util/GetInfo;->ms_bInitialized:Z
return-void
.end method

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,71 @@
.class public Lcom/firemonkeys/cloudcellapi/util/IabException;
.super Ljava/lang/Exception;
.source "SourceFile"
# instance fields
.field mResult:Lcom/firemonkeys/cloudcellapi/util/IabResult;
# direct methods
.method public constructor <init>(Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;Ljava/lang/String;)V
.locals 1
.line 33
new-instance v0, Lcom/firemonkeys/cloudcellapi/util/IabResult;
invoke-direct {v0, p1, p2}, Lcom/firemonkeys/cloudcellapi/util/IabResult;-><init>(Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;Ljava/lang/String;)V
invoke-direct {p0, v0}, Lcom/firemonkeys/cloudcellapi/util/IabException;-><init>(Lcom/firemonkeys/cloudcellapi/util/IabResult;)V
return-void
.end method
.method public constructor <init>(Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;Ljava/lang/String;Ljava/lang/Exception;)V
.locals 1
.line 40
new-instance v0, Lcom/firemonkeys/cloudcellapi/util/IabResult;
invoke-direct {v0, p1, p2}, Lcom/firemonkeys/cloudcellapi/util/IabResult;-><init>(Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;Ljava/lang/String;)V
invoke-direct {p0, v0, p3}, Lcom/firemonkeys/cloudcellapi/util/IabException;-><init>(Lcom/firemonkeys/cloudcellapi/util/IabResult;Ljava/lang/Exception;)V
return-void
.end method
.method public constructor <init>(Lcom/firemonkeys/cloudcellapi/util/IabResult;)V
.locals 1
const/4 v0, 0x0
.line 30
invoke-direct {p0, p1, v0}, Lcom/firemonkeys/cloudcellapi/util/IabException;-><init>(Lcom/firemonkeys/cloudcellapi/util/IabResult;Ljava/lang/Exception;)V
return-void
.end method
.method public constructor <init>(Lcom/firemonkeys/cloudcellapi/util/IabResult;Ljava/lang/Exception;)V
.locals 1
.line 36
invoke-virtual {p1}, Lcom/firemonkeys/cloudcellapi/util/IabResult;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0, p2}, Ljava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
iput-object p1, p0, Lcom/firemonkeys/cloudcellapi/util/IabException;->mResult:Lcom/firemonkeys/cloudcellapi/util/IabResult;
return-void
.end method
# virtual methods
.method public getResult()Lcom/firemonkeys/cloudcellapi/util/IabResult;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/IabException;->mResult:Lcom/firemonkeys/cloudcellapi/util/IabResult;
return-object v0
.end method

View File

@@ -0,0 +1,122 @@
.class public Lcom/firemonkeys/cloudcellapi/util/IabResult;
.super Ljava/lang/Object;
.source "SourceFile"
# instance fields
.field mMessage:Ljava/lang/String;
.field mResponse:Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;
.field mSku:Ljava/lang/String;
# direct methods
.method public constructor <init>(Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;Ljava/lang/String;)V
.locals 0
.line 34
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcom/firemonkeys/cloudcellapi/util/IabResult;->mResponse:Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/IabResult;->mMessage:Ljava/lang/String;
return-void
.end method
.method public constructor <init>(Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;Ljava/lang/String;Ljava/lang/String;)V
.locals 0
.line 39
invoke-direct {p0, p1, p2}, Lcom/firemonkeys/cloudcellapi/util/IabResult;-><init>(Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;Ljava/lang/String;)V
iput-object p3, p0, Lcom/firemonkeys/cloudcellapi/util/IabResult;->mSku:Ljava/lang/String;
return-void
.end method
# virtual methods
.method public getMessage()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/IabResult;->mMessage:Ljava/lang/String;
return-object v0
.end method
.method public getResponse()Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/IabResult;->mResponse:Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;
return-object v0
.end method
.method public getSku()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/IabResult;->mSku:Ljava/lang/String;
return-object v0
.end method
.method public isFailure()Z
.locals 1
.line 46
invoke-virtual {p0}, Lcom/firemonkeys/cloudcellapi/util/IabResult;->isSuccess()Z
move-result v0
xor-int/lit8 v0, v0, 0x1
return v0
.end method
.method public isSuccess()Z
.locals 2
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/IabResult;->mResponse:Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;
.line 45
sget-object v1, Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;->RESULT_OK:Lcom/firemonkeys/cloudcellapi/Consts$ResponseCode;
if-ne v0, v1, :cond_0
const/4 v0, 0x1
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
return v0
.end method
.method public toString()Ljava/lang/String;
.locals 2
.line 47
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "IabResult: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Lcom/firemonkeys/cloudcellapi/util/IabResult;->getMessage()Ljava/lang/String;
move-result-object v1
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

View File

@@ -0,0 +1,326 @@
.class public Lcom/firemonkeys/cloudcellapi/util/Inventory;
.super Ljava/lang/Object;
.source "SourceFile"
# instance fields
.field mPurchaseMap:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/String;",
"Lcom/firemonkeys/cloudcellapi/util/Purchase;",
">;"
}
.end annotation
.end field
.field mSkuMap:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/String;",
"Lcom/firemonkeys/cloudcellapi/util/SkuDetails;",
">;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>()V
.locals 1
.line 31
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 28
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mSkuMap:Ljava/util/Map;
.line 29
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
return-void
.end method
# virtual methods
.method public addPurchase(Lcom/firemonkeys/cloudcellapi/util/Purchase;)V
.locals 2
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
.line 99
invoke-virtual {p1}, Lcom/firemonkeys/cloudcellapi/util/Purchase;->getSku()Ljava/lang/String;
move-result-object v1
invoke-interface {v0, v1, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
return-void
.end method
.method public addSkuDetails(Lcom/firemonkeys/cloudcellapi/util/SkuDetails;)V
.locals 2
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mSkuMap:Ljava/util/Map;
.line 95
invoke-virtual {p1}, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->getSku()Ljava/lang/String;
move-result-object v1
invoke-interface {v0, v1, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
return-void
.end method
.method public erasePurchase(Ljava/lang/String;)V
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
.line 72
invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_0
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
:cond_0
return-void
.end method
.method public getAllOwnedSkus()Ljava/util/List;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Ljava/lang/String;",
">;"
}
.end annotation
.line 77
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->keySet()Ljava/util/Set;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
return-object v0
.end method
.method public getAllOwnedSkus(Ljava/lang/String;)Ljava/util/List;
.locals 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Ljava/util/List<",
"Ljava/lang/String;",
">;"
}
.end annotation
.line 82
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iget-object v1, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
.line 83
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_0
:goto_0
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_1
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/firemonkeys/cloudcellapi/util/Purchase;
.line 84
invoke-virtual {v2}, Lcom/firemonkeys/cloudcellapi/util/Purchase;->getItemType()Ljava/lang/String;
move-result-object v3
invoke-virtual {v3, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_0
invoke-virtual {v2}, Lcom/firemonkeys/cloudcellapi/util/Purchase;->getSku()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_0
:cond_1
return-object v0
.end method
.method public getAllPurchases()Ljava/util/List;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/firemonkeys/cloudcellapi/util/Purchase;",
">;"
}
.end annotation
.line 91
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
return-object v0
.end method
.method public getAllSkuDetails()Ljava/util/List;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/firemonkeys/cloudcellapi/util/SkuDetails;",
">;"
}
.end annotation
.line 60
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mSkuMap:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
return-object v0
.end method
.method public getAllSkus()Ljava/util/List;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Ljava/lang/String;",
">;"
}
.end annotation
.line 55
new-instance v0, Ljava/util/ArrayList;
iget-object v1, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mSkuMap:Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->keySet()Ljava/util/Set;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
return-object v0
.end method
.method public getPurchase(Ljava/lang/String;)Lcom/firemonkeys/cloudcellapi/util/Purchase;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
.line 40
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/firemonkeys/cloudcellapi/util/Purchase;
return-object p1
.end method
.method public getSkuDetails(Ljava/lang/String;)Lcom/firemonkeys/cloudcellapi/util/SkuDetails;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mSkuMap:Ljava/util/Map;
.line 35
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;
return-object p1
.end method
.method public hasDetails(Ljava/lang/String;)Z
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mSkuMap:Ljava/util/Map;
.line 50
invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result p1
return p1
.end method
.method public hasPurchase(Ljava/lang/String;)Z
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Inventory;->mPurchaseMap:Ljava/util/Map;
.line 45
invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result p1
return p1
.end method

View File

@@ -0,0 +1,236 @@
.class public Lcom/firemonkeys/cloudcellapi/util/Purchase;
.super Ljava/lang/Object;
.source "SourceFile"
# instance fields
.field mDeveloperPayload:Ljava/lang/String;
.field mItemType:Ljava/lang/String;
.field mOrderId:Ljava/lang/String;
.field mOriginalJson:Ljava/lang/String;
.field mPackageName:Ljava/lang/String;
.field mPurchaseState:I
.field mPurchaseTime:J
.field mSignature:Ljava/lang/String;
.field mSku:Ljava/lang/String;
.field mToken:Ljava/lang/String;
# direct methods
.method public constructor <init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.locals 2
.annotation system Ldalvik/annotation/Throws;
value = {
Lorg/json/JSONException;
}
.end annotation
.line 36
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mItemType:Ljava/lang/String;
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mOriginalJson:Ljava/lang/String;
.line 39
new-instance p1, Lorg/json/JSONObject;
iget-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mOriginalJson:Ljava/lang/String;
invoke-direct {p1, p2}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
const-string p2, "orderId"
.line 40
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mOrderId:Ljava/lang/String;
const-string p2, "packageName"
.line 41
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mPackageName:Ljava/lang/String;
const-string p2, "productId"
.line 42
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mSku:Ljava/lang/String;
const-string p2, "purchaseTime"
.line 43
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optLong(Ljava/lang/String;)J
move-result-wide v0
iput-wide v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mPurchaseTime:J
const-string p2, "purchaseState"
.line 44
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optInt(Ljava/lang/String;)I
move-result p2
iput p2, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mPurchaseState:I
const-string p2, "developerPayload"
.line 45
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mDeveloperPayload:Ljava/lang/String;
const-string p2, "purchaseToken"
.line 46
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
const-string v0, "token"
invoke-virtual {p1, v0, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
iput-object p1, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mToken:Ljava/lang/String;
iput-object p3, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mSignature:Ljava/lang/String;
return-void
.end method
# virtual methods
.method public getDeveloperPayload()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mDeveloperPayload:Ljava/lang/String;
return-object v0
.end method
.method public getItemType()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mItemType:Ljava/lang/String;
return-object v0
.end method
.method public getOrderId()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mOrderId:Ljava/lang/String;
return-object v0
.end method
.method public getOriginalJson()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mOriginalJson:Ljava/lang/String;
return-object v0
.end method
.method public getPackageName()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mPackageName:Ljava/lang/String;
return-object v0
.end method
.method public getPurchaseState()I
.locals 1
iget v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mPurchaseState:I
return v0
.end method
.method public getPurchaseTime()J
.locals 2
iget-wide v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mPurchaseTime:J
return-wide v0
.end method
.method public getSignature()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mSignature:Ljava/lang/String;
return-object v0
.end method
.method public getSku()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mSku:Ljava/lang/String;
return-object v0
.end method
.method public getToken()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mToken:Ljava/lang/String;
return-object v0
.end method
.method public toString()Ljava/lang/String;
.locals 2
.line 62
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "PurchaseInfo(type:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v1, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mItemType:Ljava/lang/String;
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;
iget-object v1, p0, Lcom/firemonkeys/cloudcellapi/util/Purchase;->mOriginalJson: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

View File

@@ -0,0 +1,241 @@
.class public Lcom/firemonkeys/cloudcellapi/util/Security;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field private static final KEY_FACTORY_ALGORITHM:Ljava/lang/String; = "RSA"
.field private static final SIGNATURE_ALGORITHM:Ljava/lang/String; = "SHA1withRSA"
.field private static final TAG:Ljava/lang/String; = "IABUtil/Security"
# direct methods
.method public constructor <init>()V
.locals 0
.line 44
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static generatePublicKey(Ljava/lang/String;)Ljava/security/PublicKey;
.locals 3
const-string v0, "IABUtil/Security"
.line 86
:try_start_0
invoke-static {p0}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decode(Ljava/lang/String;)[B
move-result-object p0
const-string v1, "RSA"
.line 87
invoke-static {v1}, Ljava/security/KeyFactory;->getInstance(Ljava/lang/String;)Ljava/security/KeyFactory;
move-result-object v1
.line 88
new-instance v2, Ljava/security/spec/X509EncodedKeySpec;
invoke-direct {v2, p0}, Ljava/security/spec/X509EncodedKeySpec;-><init>([B)V
invoke-virtual {v1, v2}, Ljava/security/KeyFactory;->generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
move-result-object p0
:try_end_0
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_2
.catch Ljava/security/spec/InvalidKeySpecException; {:try_start_0 .. :try_end_0} :catch_1
.catch Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException; {:try_start_0 .. :try_end_0} :catch_0
return-object p0
:catch_0
move-exception p0
goto :goto_0
:catch_1
move-exception p0
goto :goto_1
:catch_2
move-exception p0
goto :goto_2
:goto_0
const-string v1, "Base64 decoding failed."
.line 95
invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 96
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-direct {v0, p0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/Throwable;)V
throw v0
:goto_1
const-string v1, "Invalid key specification."
.line 92
invoke-static {v0, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 93
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-direct {v0, p0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/Throwable;)V
throw v0
.line 90
:goto_2
new-instance v0, Ljava/lang/RuntimeException;
invoke-direct {v0, p0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v0
.end method
.method public static verify(Ljava/security/PublicKey;Ljava/lang/String;Ljava/lang/String;)Z
.locals 3
const-string v0, "IABUtil/Security"
const/4 v1, 0x0
:try_start_0
const-string v2, "SHA1withRSA"
.line 112
invoke-static {v2}, Ljava/security/Signature;->getInstance(Ljava/lang/String;)Ljava/security/Signature;
move-result-object v2
.line 113
invoke-virtual {v2, p0}, Ljava/security/Signature;->initVerify(Ljava/security/PublicKey;)V
.line 114
invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B
move-result-object p0
invoke-virtual {v2, p0}, Ljava/security/Signature;->update([B)V
.line 115
invoke-static {p2}, Lcom/firemonkeys/cloudcellapi/util/Base64;->decode(Ljava/lang/String;)[B
move-result-object p0
invoke-virtual {v2, p0}, Ljava/security/Signature;->verify([B)Z
move-result p0
if-nez p0, :cond_0
const-string p0, "Signature verification failed."
.line 116
invoke-static {v0, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
:try_end_0
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_0} :catch_3
.catch Ljava/security/InvalidKeyException; {:try_start_0 .. :try_end_0} :catch_2
.catch Ljava/security/SignatureException; {:try_start_0 .. :try_end_0} :catch_1
.catch Lcom/firemonkeys/cloudcellapi/util/Base64DecoderException; {:try_start_0 .. :try_end_0} :catch_0
return v1
:cond_0
const/4 p0, 0x1
return p0
:catch_0
const-string p0, "Base64 decoding failed."
.line 127
invoke-static {v0, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_0
:catch_1
const-string p0, "Signature exception."
.line 125
invoke-static {v0, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_0
:catch_2
const-string p0, "Invalid key specification."
.line 123
invoke-static {v0, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_0
:catch_3
const-string p0, "NoSuchAlgorithmException."
.line 121
invoke-static {v0, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
:goto_0
return v1
.end method
.method public static verifyPurchase(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
.locals 3
const/4 v0, 0x0
const-string v1, "IABUtil/Security"
if-nez p1, :cond_0
const-string p0, "data is null"
.line 61
invoke-static {v1, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
return v0
.line 66
:cond_0
invoke-static {p2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v2
if-nez v2, :cond_1
.line 67
invoke-static {p0}, Lcom/firemonkeys/cloudcellapi/util/Security;->generatePublicKey(Ljava/lang/String;)Ljava/security/PublicKey;
move-result-object p0
.line 68
invoke-static {p0, p1, p2}, Lcom/firemonkeys/cloudcellapi/util/Security;->verify(Ljava/security/PublicKey;Ljava/lang/String;Ljava/lang/String;)Z
move-result p0
if-nez p0, :cond_1
const-string p0, "signature does not match data."
.line 70
invoke-static {v1, p0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
return v0
:cond_1
const/4 p0, 0x1
return p0
.end method

View File

@@ -0,0 +1,214 @@
.class public Lcom/firemonkeys/cloudcellapi/util/SkuDetails;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field public static final ITEM_TYPE_INAPP:Ljava/lang/String; = "inapp"
# instance fields
.field mDescription:Ljava/lang/String;
.field mItemType:Ljava/lang/String;
.field mJson:Ljava/lang/String;
.field mPrice:Ljava/lang/String;
.field mPriceAmountMicros:Ljava/lang/String;
.field mPriceCurrencyCode:Ljava/lang/String;
.field mSku:Ljava/lang/String;
.field mTitle:Ljava/lang/String;
.field mType:Ljava/lang/String;
# direct methods
.method public constructor <init>(Ljava/lang/String;)V
.locals 1
.annotation system Ldalvik/annotation/Throws;
value = {
Lorg/json/JSONException;
}
.end annotation
const-string v0, "inapp"
.line 38
invoke-direct {p0, v0, p1}, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;-><init>(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method public constructor <init>(Ljava/lang/String;Ljava/lang/String;)V
.locals 0
.annotation system Ldalvik/annotation/Throws;
value = {
Lorg/json/JSONException;
}
.end annotation
.line 41
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mItemType:Ljava/lang/String;
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mJson:Ljava/lang/String;
.line 44
new-instance p1, Lorg/json/JSONObject;
iget-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mJson:Ljava/lang/String;
invoke-direct {p1, p2}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
const-string p2, "productId"
.line 45
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mSku:Ljava/lang/String;
const-string p2, "type"
.line 46
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mType:Ljava/lang/String;
const-string p2, "price"
.line 47
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mPrice:Ljava/lang/String;
const-string p2, "price_amount_micros"
.line 48
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mPriceAmountMicros:Ljava/lang/String;
const-string p2, "price_currency_code"
.line 49
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mPriceCurrencyCode:Ljava/lang/String;
const-string p2, "title"
.line 50
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p2
iput-object p2, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mTitle:Ljava/lang/String;
const-string p2, "description"
.line 51
invoke-virtual {p1, p2}, Lorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
iput-object p1, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mDescription:Ljava/lang/String;
return-void
.end method
# virtual methods
.method public getDescription()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mDescription:Ljava/lang/String;
return-object v0
.end method
.method public getPrice()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mPrice:Ljava/lang/String;
return-object v0
.end method
.method public getPriceAmountMicros()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mPriceAmountMicros:Ljava/lang/String;
return-object v0
.end method
.method public getPriceCurrencyCode()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mPriceCurrencyCode:Ljava/lang/String;
return-object v0
.end method
.method public getSku()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mSku:Ljava/lang/String;
return-object v0
.end method
.method public getTitle()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mTitle:Ljava/lang/String;
return-object v0
.end method
.method public getType()Ljava/lang/String;
.locals 1
iget-object v0, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mType:Ljava/lang/String;
return-object v0
.end method
.method public toString()Ljava/lang/String;
.locals 2
.line 65
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "SkuDetails:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v1, p0, Lcom/firemonkeys/cloudcellapi/util/SkuDetails;->mJson: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