1 // Copyright 2023 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_ANDROID_SHARED_PREFERENCES_SHARED_PREFERENCES_MANAGER_H_ 6 #define BASE_ANDROID_SHARED_PREFERENCES_SHARED_PREFERENCES_MANAGER_H_ 7 8 #include "base/base_export.h" 9 10 #include "base/android/jni_android.h" 11 12 namespace base::android { 13 14 // A SharedPreferencesManager that provides access to Android SharedPreferences 15 // with uniqueness key checking. 16 class BASE_EXPORT SharedPreferencesManager { 17 public: 18 explicit SharedPreferencesManager(const JavaRef<jobject>& jobj, JNIEnv* env); 19 SharedPreferencesManager(const SharedPreferencesManager&); 20 SharedPreferencesManager& operator=(const SharedPreferencesManager&) = delete; 21 ~SharedPreferencesManager(); 22 23 void RemoveKey(const std::string& shared_preference_key); 24 bool ContainsKey(const std::string& shared_preference_key); 25 bool ReadBoolean(const std::string& shared_preference_key, 26 bool default_value); 27 int ReadInt(const std::string& shared_preference_key, int default_value); 28 std::string ReadString(const std::string& shared_preference_key, 29 const std::string& default_value); 30 void WriteString(const std::string& shared_preference_key, 31 const std::string& value); 32 33 private: 34 ScopedJavaLocalRef<jobject> java_obj_; 35 raw_ptr<JNIEnv> env_; 36 }; 37 38 } // namespace base::android 39 40 #endif // BASE_ANDROID_SHARED_PREFERENCES_SHARED_PREFERENCES_MANAGER_H_ 41