如标题所述,有没有办法获得Android Jetpack Preferences DataStore(例如dataStore)中存储的所有密钥

val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")

推荐答案

为了得到所有的 keys

suspend fun Context.readAllKeys(): Set<Preferences.Key<*>>? {
    val keys = dataStore.data
        .map {
           it.asMap().keys
        }
    return keys.firstOrNull()
}

通过它的关键获得价值

suspend fun Context.getValueByKey(key: Preferences.Key<*>): Any? {
    val value = dataStore.data
        .map {
            it[key]
        }
    return value.firstOrNull()
}

Android相关问答推荐

修改参数应该应用于哪些子元素?

Kotlin多平台向导,不兼容版本(ANP 8.2.0)ANP 8.1.2

Jetpack Compose和Android Studio中的普通设计工具有什么不同?

从单元测试访问RES/RAW文件

在以XML格式设置完整屏幕视图时可见App Compat按钮

安卓喷气背包组成倒计时动画

Android 14预测性背部手势-闪烁的白色背景色

当提供非状态对象时,compose 如何进行重组

尽管我在onCreate()期间已经初始化,但仍出现未初始化的late init变量错误

Android WebView 不会在滚动端加载新内容

如何在ExecutorService中设置progressBar的进度?不想使用 AsyncTask,因为它已被弃用

Android Compose 为什么 Checkbox 在父对象可点击时需要 onCheckChanged?

修复错误 Invariant Violation: requireNativeComponent: "RNSScreenStackHeaderConfig" was not found in the UIManager

如果 auth 失败,如何显示 toast jetpack compose firebase if else @Composable 调用只能在 @Composable 函数的上下文中发生

如何在 Jetpack Compose 中设置行宽等于 TextField 的宽度?

Jetpack Compose - 每次点击按钮都不起作用

如何放置在柱子的角落(底端)

如何在 Android 上移动 EditText 上的图标?

Firebase Crashlytics 缩小 R8 Android

升级到 android studio 花栗鼠后,应用程序未安装在模拟器中