⑥【Kotlin】SharedPreferencesにログイン情報を保存し、次回アプリ起動時に自動ログイン

Kotlin

SharedPreferenceとは、Androidアプリで簡単な永続データを保存するための仕組みです

(※ Androidアプリは通常、起動するたびにデータが初期化されます)

SharedPreferenceは、名前と値のペアのセットを格納します

PrefsManager.kt(MainActivityと同階層に配置)

import android.content.Context
import android.content.SharedPreferences

class PrefsManager(context: Context) {
    private val prefs: SharedPreferences = context.getSharedPreferences("user_prefs", Context.MODE_PRIVATE)

    fun saveUserId(userId: String) {
        prefs.edit().putString("user_id", userId).apply()
    }

    fun getUserId(): String? {
        return prefs.getString("user_id", null)
    }

    fun clearUserId() {
        prefs.edit().remove("user_id").apply()
    }
}

※ RegisterActivity.ktやLoginActivity.ktで
private lateinit var prefs: PrefsManager のようにしてインスタンスを作成し、
データを保存・取得できます

MainActivity.kt

class MainActivity : AppCompatActivity() {
    private lateinit var prefs: PrefsManager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        prefs = PrefsManager(this)

        val userId = prefs.getUserId()
        if (userId != null) {
            startActivity(Intent(this, HomeActivity::class.java))
            finish()
        } else {
            startActivity(Intent(this, LoginActivity::class.java))
            finish()
        }
    }
}

ログアウト

fun logout(context: Context) {
    val prefs = PrefsManager(context)
    prefs.clearUserId()
}

AndroidManifest.xml

PrefsManager.ktはRegisterActivity.ktとは異なり、AndroidManifestに追加する必要がありません

なぜならActivityではないからです

BACK