views:

4857

answers:

4

Hi,

I am creating an application which connects to the server using username/password and I would like to enable the option "Save password" so the user wouldn't have to type the password each time the application starts.

I was trying to do it with Shared Preferences but am not sure if this is the best solution.

I would appreciate any suggestion on how to store user values/settings in Android application.

Thanks!

A: 

In my current code I've just used a CheckBoxPreference as part of a PreferenceScreen object/resource.

It seems to work fine, and given a PreferenceScreen object the system can build its own UI for lists of preferences really easily.

This method does require that you create a new Activity which extends PreferenceActivity, but it's pretty trivial.

Alnitak
+11  A: 

In general SharedPreferences are your best bet for storing preferences, so in general I'd recommend that approach for saving application and user settings.

The only area of concern here is what you're saving. Passwords are always a tricky thing to store, and I'd be particularly wary of storing them as clear text. The Android architecture is such that your application's SharedPreferences are sandboxed to prevent other applications from being able to access the values so there's some security there, but physical access to a phone could potentially allow access to the values.

If possible I'd consider modifying the server to use a negotiated token for providing access, something like OAuth. Alternatively you may need to construct some sort of cryptographic store, though that's non-trivial. At the very least, make sure you're encrypting the password before writing it to disk.

Reto Meier
A: 

you need to use the sqlite, security apit to store the passwords. here is best example, which stores passwords, -- passwordsafe. here is link for the source and explanation -- http://code.google.com/p/android-passwordsafe/

The OP needs to store one username and password pair. It would be ridiculous to consider creating an entire database table for this one use
HXCaine
+7  A: 

About the simplest way to store a single preference in an Android Activity is to do something like this:

Editor e = this.getPreferences(Context.MODE_PRIVATE).edit();
e.putString("password", mPassword);
e.commit();

If you're worried about the security of these (you really shouldn't be) then you could always encrypt the password before storing it.

fiXedd