Android

Android shared preference(앱 내에 토큰,자동로그인 등 데이터를 저장)

leopard4 2023. 1. 31. 11:17

두가지 방법이 있다.
shared preference -> 간단히 저장할때
sqlite -> DB

=> 앱을 삭제하면, 같이 삭제된다.

 

Main 코드

package com.leopard4.saveapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    EditText editSentence;
    Button btnSave;
    // 저장소 이름은 상수로 많이 사용함
    private static final String SP_NAME = "save_app";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editSentence = findViewById(R.id.editSentence);
        btnSave = findViewById(R.id.btnSave);

        // 만약에, 앱 저장소에, sentence라는 키로 저장된 데이터가 있으면,
        // 에디트텍스트에 표시를 하자!
        SharedPreferences sp = getSharedPreferences(SP_NAME, MODE_PRIVATE);
        String sentence = sp.getString("sentence", "no data"); // sentence라는 키로 저장된 데이터가 없으면, no data를 반환
        int data = sp.getInt("hello", 0);
        editSentence.setText(sentence + data);

        // 유저가 입력한 문장을 SharedPreferences에 저장
        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String sentence = editSentence.getText().toString().trim();

                // 첫번째 파라미터는, 저장소 이름을 적어준다
                // 두번째 파라미터는, 우리 앱에서만 사용할수 있도록 한다.
                SharedPreferences sp = getSharedPreferences(SP_NAME, MODE_PRIVATE); // 자동로그인,토큰등을 저장
                SharedPreferences.Editor editor = sp.edit();
                editor.putString("sentence", sentence);
                editor.putInt("hello", 100);
                editor.apply();

                // 저장을 누르면 hint가 나오게
                editSentence.setText("");
            }
        });



    }
}