Ya, ini rumit di Android. Anda tidak ingin menyimpan kata sandi plaintext di preferensi, karena siapa pun dengan perangkat yang di-rooting pada dasarnya akan menampilkan kata sandi mereka kepada dunia. Di sisi lain, Anda tidak dapat menggunakan sandi terenkripsi, karena Anda harus menyimpan kunci enkripsi/dekripsi di suatu tempat di perangkat, yang lagi-lagi rentan terhadap serangan root.
Salah satu solusi yang saya gunakan beberapa waktu lalu adalah membuat server menghasilkan "tiket" yang diteruskan kembali ke perangkat, yang bagus untuk jangka waktu tertentu. Tiket ini digunakan oleh perangkat untuk semua komunikasi, menggunakan SSL tentunya agar orang tidak dapat mencuri tiket Anda. Dengan cara ini, pengguna mengautentikasi kata sandi mereka di server satu kali, server mengirim kembali tiket yang kedaluwarsa, dan kata sandi tidak pernah disimpan di mana pun di perangkat.
Beberapa mekanisme otentikasi berkaki tiga, seperti OpenID, Facebook, bahkan Google API, menggunakan mekanisme ini. Kekurangannya adalah kadang-kadang ketika tiket kedaluwarsa, pengguna harus login kembali.
Pada akhirnya, itu tergantung pada seberapa aman Anda menginginkan aplikasi Anda. Jika ini hanya untuk membedakan pengguna, dan tidak ada informasi super rahasia yang disimpan seperti rekening bank atau golongan darah, maka mungkin menyimpan PWD dalam teks biasa di perangkat tidak masalah :)
Semoga berhasil, metode apa pun yang Anda putuskan adalah yang terbaik untuk situasi khusus Anda!
Sunting:Saya harus mencatat bahwa teknik ini mentransfer tanggung jawab keamanan ke server - Anda akan ingin menggunakan hash asin untuk perbandingan kata sandi di server, sebuah ide yang akan Anda lihat di beberapa komentar lain untuk pertanyaan ini. Ini mencegah kata sandi plaintext muncul di mana saja kecuali Tampilan EditText pada perangkat, komunikasi SSL ke server, dan RAM server saat garam dan hash kata sandi. Itu tidak pernah disimpan di disk, yang merupakan Good Thing™.