Implements a setup dialog on first game launch that allows users to enter their custom community server URL without rebuilding the APK. Features: - Server URL input dialog on first launch - URL validation (format check) - Connection test button - SharedPreferences storage - Priority: SharedPreferences > AndroidManifest.xml > EA defaults - Activity restart flow for applying configuration New files: - CommunityServerManager.smali (URL management) - ServerSetupActivity.smali + 4 inner classes (dialog UI) - res/layout/activity_server_setup.xml (layout) - SERVER-URL-INPUT-IMPLEMENTATION.md (docs) Modified files: - SynergyEnvironmentImpl.smali (SharedPreferences check priority) - MainActivity.smali (first-launch check + onActivityResult) - AndroidManifest.xml (declare ServerSetupActivity) Benefits: - One APK works with any server - Easy server switching - Lower barrier to entry for non-technical users
184 lines
4.9 KiB
Smali
184 lines
4.9 KiB
Smali
.class public Lcom/firemint/realracing/CommunityServerManager;
|
|
.super Ljava/lang/Object;
|
|
.source "CommunityServerManager.java"
|
|
|
|
|
|
# static fields
|
|
.field private static final PREFS_NAME:Ljava/lang/String; = "rr3_community_server"
|
|
|
|
.field private static final KEY_SERVER_URL:Ljava/lang/String; = "server_url"
|
|
|
|
.field private static final TAG:Ljava/lang/String; = "CommunityServerManager"
|
|
|
|
|
|
# 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 checkServerUrl(Landroid/content/Context;)Z
|
|
.locals 3
|
|
|
|
const-string v0, "rr3_community_server"
|
|
|
|
const/4 v1, 0x0
|
|
|
|
.line 16
|
|
invoke-virtual {p0, v0, v1}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
|
|
|
|
move-result-object p0
|
|
|
|
const-string v0, "server_url"
|
|
|
|
const/4 v2, 0x0
|
|
|
|
.line 17
|
|
invoke-interface {p0, v0, v2}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
|
|
|
move-result-object p0
|
|
|
|
if-eqz p0, :cond_0
|
|
|
|
.line 20
|
|
invoke-virtual {p0}, Ljava/lang/String;->isEmpty()Z
|
|
|
|
move-result p0
|
|
|
|
if-nez p0, :cond_0
|
|
|
|
const/4 v1, 0x1
|
|
|
|
:cond_0
|
|
return v1
|
|
.end method
|
|
|
|
.method public static clearServerUrl(Landroid/content/Context;)V
|
|
.locals 2
|
|
|
|
const-string v0, "rr3_community_server"
|
|
|
|
const/4 v1, 0x0
|
|
|
|
.line 56
|
|
invoke-virtual {p0, v0, v1}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
|
|
|
|
move-result-object p0
|
|
|
|
.line 57
|
|
invoke-interface {p0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
|
|
|
|
move-result-object p0
|
|
|
|
const-string v0, "server_url"
|
|
|
|
.line 58
|
|
invoke-interface {p0, v0}, Landroid/content/SharedPreferences$Editor;->remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
|
|
|
|
.line 59
|
|
invoke-interface {p0}, Landroid/content/SharedPreferences$Editor;->apply()V
|
|
|
|
const-string p0, "CommunityServerManager"
|
|
|
|
const-string v0, "\u274c Server URL cleared"
|
|
|
|
.line 61
|
|
invoke-static {p0, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public static getServerUrl(Landroid/content/Context;)Ljava/lang/String;
|
|
.locals 3
|
|
|
|
const-string v0, "rr3_community_server"
|
|
|
|
const/4 v1, 0x0
|
|
|
|
.line 28
|
|
invoke-virtual {p0, v0, v1}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
|
|
|
|
move-result-object p0
|
|
|
|
const-string v0, "server_url"
|
|
|
|
const-string v1, ""
|
|
|
|
.line 29
|
|
invoke-interface {p0, v0, v1}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
|
|
|
move-result-object p0
|
|
|
|
.line 31
|
|
new-instance v0, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
const-string v1, "\ud83d\udd17 Getting server URL: "
|
|
|
|
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
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 v0
|
|
|
|
const-string v1, "CommunityServerManager"
|
|
|
|
invoke-static {v1, v0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public static saveServerUrl(Landroid/content/Context;Ljava/lang/String;)V
|
|
.locals 2
|
|
|
|
const-string v0, "rr3_community_server"
|
|
|
|
const/4 v1, 0x0
|
|
|
|
.line 41
|
|
invoke-virtual {p0, v0, v1}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
|
|
|
|
move-result-object p0
|
|
|
|
.line 42
|
|
invoke-interface {p0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
|
|
|
|
move-result-object p0
|
|
|
|
const-string v0, "server_url"
|
|
|
|
.line 43
|
|
invoke-interface {p0, v0, p1}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
|
|
|
|
.line 44
|
|
invoke-interface {p0}, Landroid/content/SharedPreferences$Editor;->apply()V
|
|
|
|
.line 46
|
|
new-instance p0, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {p0}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
const-string v0, "\u2705 Server URL saved: "
|
|
|
|
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object p0
|
|
|
|
const-string p1, "CommunityServerManager"
|
|
|
|
invoke-static {p1, p0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
return-void
|
|
.end method
|