#3, como te han comentado ya, de seguras tienen poco:
http://www.androiddiscuss.com/1-android-discuss/1671.html
Se guardan en un .xml y podrían ser accesibles. De todas formas, si la pass la guardas en md5, por ejemplo, ya estás añadiendo algo más de seguridad. Te lo digo porque estoy con un proyecto de la empresa (interno) por mi cuenta en el que almaceno el típico usuario y pass. La pass la almaceno en la base de datos MySQL en md5. Cuando me ponen la pass y es correcta (y han marcado el check de guardar sesión), la codifico a md5 y la guardo en las SharedPreferences.
SharedPreferences preferencias = getSharedPreferences("ejem_ejem",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferencias.edit();
if (chkGuardar.isChecked()) {
editor.putString("email", email);
editor.putString("pass", pass);
editor.commit();
}
else
{
editor.clear();
editor.commit();
}
Función encriptación:
public final String md5(final String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest
.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++) {
String h = Integer.toHexString(0xFF & messageDigest[i]);
while (h.length() < 2)
h = "0" + h;
hexString.append(h);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}