@@ -11,6 +11,11 @@ open class AndroidUserDefaults : Foundation.UserDefaults {
11
11
12
12
private let userDefaultsAccess : UserDefaultsAccess
13
13
14
+ public required init ( _ userDefaultsAccess: UserDefaultsAccess ) {
15
+ self . userDefaultsAccess = userDefaultsAccess
16
+ super. init ( suiteName: nil ) !
17
+ }
18
+
14
19
public convenience init ( ) {
15
20
self . init ( suiteName: nil ) !
16
21
}
@@ -176,11 +181,26 @@ open class AndroidUserDefaults : Foundation.UserDefaults {
176
181
extension AndroidUserDefaults : @unchecked Sendable {
177
182
}
178
183
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
+
179
194
#if SKIP
180
195
181
196
/// This bridged class gives us efficient access to `skip.foundation.UserDefaults` without bridging it to native.
182
197
public 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
+ }
184
204
185
205
public init ( suiteName: String ? ) {
186
206
userDefaults = skip. foundation. UserDefaults ( suiteName: suiteName)
0 commit comments