@@ -11,6 +11,11 @@ open class AndroidUserDefaults : Foundation.UserDefaults {
1111
1212 private let userDefaultsAccess : UserDefaultsAccess
1313
14+ public required init ( _ userDefaultsAccess: UserDefaultsAccess ) {
15+ self . userDefaultsAccess = userDefaultsAccess
16+ super. init ( suiteName: nil ) !
17+ }
18+
1419 public convenience init ( ) {
1520 self . init ( suiteName: nil ) !
1621 }
@@ -176,11 +181,26 @@ open class AndroidUserDefaults : Foundation.UserDefaults {
176181extension AndroidUserDefaults : @unchecked Sendable {
177182}
178183
184+ extension AndroidUserDefaults : JObjectProtocol , JConvertible {
185+ public static func fromJavaObject( _ obj: JavaObjectPointer ? , options: JConvertibleOptions ) -> Self {
186+ return try ! Self . init ( UserDefaultsAccess ( AnyDynamicObject ( for: obj!, options: options) ) )
187+ }
188+
189+ public func toJavaObject( options: JConvertibleOptions ) -> JavaObjectPointer ? {
190+ return userDefaultsAccess. userDefaults. toJavaObject ( options: options)
191+ }
192+ }
193+
179194#if SKIP
180195
181196/// This bridged class gives us efficient access to `skip.foundation.UserDefaults` without bridging it to native.
182197public class UserDefaultsAccess {
183- private let userDefaults : skip . foundation . UserDefaults
198+ let userDefaults : skip . foundation . UserDefaults
199+
200+ // Fully-qualify the name here so that it bridges to AnyDynamicObject
201+ public init ( _ userDefaults: skip . foundation . UserDefaults ) {
202+ self . userDefaults = userDefaults
203+ }
184204
185205 public init ( suiteName: String ? ) {
186206 userDefaults = skip. foundation. UserDefaults ( suiteName: suiteName)
0 commit comments