From 086bb932124bf52b6420091ccce21de5e21dd21a Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 19 Nov 2025 19:23:04 +0800 Subject: [PATCH] Share preference util --- app/src/main/AndroidManifest.xml | 2 +- .../gamedog/vididin/{App.kt => VidiDinApp.kt} | 4 +- .../vididin/main/fragments/TasksFragment.kt | 1 + .../com/ama/core/architecture/util/SpUtil.kt | 182 +++++++++++++++++- 4 files changed, 186 insertions(+), 3 deletions(-) rename app/src/main/java/com/gamedog/vididin/{App.kt => VidiDinApp.kt} (79%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5a60d17..46bdbfd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,7 +5,7 @@ putObject(key: String, obj: T) { + try { + val jsonString = gson.toJson(obj) + val encryptedData = Base64.encodeToString(jsonString.toByteArray(), Base64.DEFAULT) + putString(key, encryptedData) + } catch (e: Exception) { + e.printStackTrace() + } + } + + inline fun getObject(key: String, defaultObj: T? = null): T? { + return try { + val encryptedData = getString(key) + if (encryptedData.isBlank()) return defaultObj + + val jsonString = String(Base64.decode(encryptedData, Base64.DEFAULT)) + gson.fromJson(jsonString, T::class.java) ?: defaultObj + } catch (e: Exception) { + e.printStackTrace() + defaultObj + } + } + + + fun putList(key: String, list: List) { + try { + val jsonString = gson.toJson(list) + val encryptedData = Base64.encodeToString(jsonString.toByteArray(), Base64.DEFAULT) + putString(key, encryptedData) + } catch (e: Exception) { + e.printStackTrace() + } + } + + inline fun getList(key: String): List { + return try { + val encryptedData = getString(key) + if (encryptedData.isBlank()) return emptyList() + + val jsonString = String(Base64.decode(encryptedData, Base64.DEFAULT)) + val type: Type = object : TypeToken>() {}.type + gson.fromJson>(jsonString, type) ?: emptyList() + } catch (e: Exception) { + e.printStackTrace() + emptyList() + } + } + + + fun putMap(key: String, map: Map) { + try { + val jsonString = gson.toJson(map) + val encryptedData = Base64.encodeToString(jsonString.toByteArray(), Base64.DEFAULT) + putString(key, encryptedData) + } catch (e: Exception) { + e.printStackTrace() + } + } + + + inline fun getMap(key: String): Map { + return try { + val encryptedData = getString(key) + if (encryptedData.isBlank()) return emptyMap() + + val jsonString = String(Base64.decode(encryptedData, Base64.DEFAULT)) + val type: Type = object : TypeToken>() {}.type + gson.fromJson>(jsonString, type) ?: emptyMap() + } catch (e: Exception) { + e.printStackTrace() + emptyMap() + } + } + + + + + // ----------- 工具方法 ----------- + fun contains(key: String): Boolean { + return sharedPreferences.contains(key) + } + + fun remove(key: String) { + sharedPreferences.edit().remove(key).apply() + } + + fun clear() { + sharedPreferences.edit().clear().apply() + } + + fun getAllKeys(): Set { + return sharedPreferences.all.keys + } + + } \ No newline at end of file