In the Android API http://developer.android.com/guide/topics/data/data-storage.html#pref
It says:
Shared Preference allows you to save and retrieve persistent key-value pairs of primitive data types. You can use SharedPreferences to save any primitive data: booleans, floats, ints, longs, and strings.
Is String a primitive data type or an Object?
Straight from JLS:
A string literal is a reference to an instance of class String
So no it is not a primitive.