Android uygulama geliştirirken bazı verileri telefonda tutmamız gereken durumlar olabilir. Bunun için SQLite ve ya Shared Preferences kullanabilirsiniz. Shared Preferences ile ilgili ilk yazıyı okumadıysanız buradan ulaşabilirsiniz. Yazıyı okumanızda fayda var çünkü buradaki bilgileri kullanarak geliştirme yapacağız.
Geliştireceğimiz senaryo şu şekilde olacak; uygulama splash-screen ekranında iken shared-preferences’ta kayıt olup olmadığını kontrol edecek eğer bir kayıt varsa doğrudan giriş yapacak, yoksa giriş sayfasına yönlendirecek.
Örneğimizde temel bir giriş sayfası tasarlayacağız ve girilen bilgileri Shared Preferences yardımıyla kaydedip kullancağız. Bu giriş sayfası, ui style işlemi için oluşturduğumuz sayfa ile aynı olacağı için activity_login.xml içerisini paylaşmayacağım. XML kodunu ilgili yazıda bulabilirsiniz.
Bu yazının bağımlı olduğu diğer yazılar aşağıdadır. Bu yazılardaki kodlar üzerinden ilerleyecektir.
- https://bilisim.io/2020/02/11/android-basit-ui-style/
- https://bilisim.io/2018/01/08/android-sharedpreferences-yapisi-ve-management-sinif-olusturma/
- https://bilisim.io/2019/06/13/android-splash-screen-yapimi/
- PreferencesManager.java
Bu class bu yazının temelini oluşturan blog yazısından alınmıştır. Sadece bu yazı için kullanmak adına ufak değişiklikler yaptım. Bu class üzerinden yazma / okuma işlemlerini gerçekleştireceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
import android.content.Context; import android.content.SharedPreferences; public class PreferencesManager { private Context context; private final String sharedPreferencesName = "secretValues"; private final String defaultValue = ""; private final SharedPreferences sharedPreferences; public PreferencesManager(Context context) { this.context = context; sharedPreferences = context.getSharedPreferences(sharedPreferencesName,Context.MODE_PRIVATE); } public String getString(String key) { return sharedPreferences.getString(key,defaultValue); } public void putString(String key, String value) { SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(key, value); editor.commit(); } public String getSharedPreferencesName(){ return sharedPreferencesName; } } |
2. LoginActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
public class LoginActivity extends AppCompatActivity { private ProgressDialog progressDialog; private EditText txtEmail; private EditText txtPassword; private Button btnLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); init(); btnLogin.setOnClickListener(btnLoginListener); } private void init() { txtEmail = findViewById(R.id.txtLoginEmail); txtPassword = findViewById(R.id.txtLoginPassword); btnLogin = findViewById(R.id.btnLogin); } private View.OnClickListener btnLoginListener = new View.OnClickListener() { @Override public void onClick(View v) { String email = txtEmail.getText().toString(); String sifre = txtPassword.getText().toString(); if (email.equals("") || sifre.equals("")) { Toast.makeText(getApplicationContext(), "Email ve Şifre Boş Olamaz!", Toast.LENGTH_LONG).show(); } else if (!CommonValidator.validateEmail(email)) { Toast.makeText(getApplicationContext(), "Lütfen Bilgilerizi Tam Giriniz!", Toast.LENGTH_LONG).show(); } else { loginUser(); } } }; } |
3. SplashScreenActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
public class SplashScreenActivity extends AppCompatActivity { private final static int SPLASH_TIME_OUT = 3000; private final static String KEY_EMAIL = "EMAIL"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash_screen); if (isSavedUser()) { openActivity(LoginActivity.class); } else { openActivity(MainActivity.class); } } private void openActivity(final Class activity) { new Handler().postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(SplashScreenActivity.this, activity); startActivity(intent); finish(); } }, SPLASH_TIME_OUT); } private boolean isSavedUser() { return new PreferencesManager(this).getString(KEY_EMAIL).isEmpty(); } } |
Basit bir şekilde SharedPreferences yazma ve okuma işlemlerini gerçekleştirdik. Görüldüğü gibi key – value mekanizmasına göre çalışmaktadır.
Burada asıl dikkat etmemiz gerek noktalar oluşturduğumuz SharedPreferences tipi ve modu. Bu konular için ilgili yazıya bakmanız yeterli olacaktır.
Faydalı olması dileğiyle.