|
15 | 15 | // </copyright>
|
16 | 16 |
|
17 | 17 | namespace Google.Impl {
|
18 |
| - using System; |
19 |
| - using System.Text; |
20 |
| - using System.Collections.Generic; |
21 |
| - using System.Runtime.InteropServices; |
| 18 | + using System; |
| 19 | + using System.Text; |
| 20 | + using System.Collections.Generic; |
| 21 | + using System.Runtime.InteropServices; |
22 | 22 |
|
23 |
| - using UnityEngine; |
| 23 | + using UnityEngine; |
| 24 | +#if UNITY_2022_2_OR_NEWER |
| 25 | +#else |
| 26 | + using System.Reflection; |
| 27 | +#endif |
24 | 28 |
|
25 |
| - internal class GoogleSignInImpl : BaseObject, ISignInImpl { |
| 29 | + internal class GoogleSignInImpl : BaseObject, ISignInImpl { |
26 | 30 |
|
27 | 31 | internal GoogleSignInImpl(GoogleSignInConfiguration configuration)
|
28 | 32 | : base(GoogleSignIn_Create(GetPlayerActivity())) {
|
@@ -97,7 +101,7 @@ public void Disconnect() {
|
97 | 101 | static AndroidJavaObject parentActivity;
|
98 | 102 | static IntPtr GoogleSignIn_Create(IntPtr activity)
|
99 | 103 | {
|
100 |
| - parentActivity = new AndroidJavaObject(activity); |
| 104 | + parentActivity = activity.ToAndroidJavaObject(); |
101 | 105 |
|
102 | 106 | return GoogleSignInFragment.CallStatic<AndroidJavaObject>("getInstance",parentActivity).GetRawObject();
|
103 | 107 | }
|
@@ -149,33 +153,33 @@ static IntPtr GoogleSignIn_SignInSilently(HandleRef self)
|
149 | 153 | return GoogleSignInHelper.CallStatic<AndroidJavaObject>("signInSilently",parentActivity).GetRawObject();
|
150 | 154 | }
|
151 | 155 |
|
152 |
| - static void GoogleSignIn_Signout(HandleRef self) => GoogleSignInHelper.CallStatic("signOut",new AndroidJavaObject(self.Handle)); |
| 156 | + static void GoogleSignIn_Signout(HandleRef self) => GoogleSignInHelper.CallStatic("signOut",self.ToAndroidJavaObject()); |
153 | 157 |
|
154 |
| - static void GoogleSignIn_Disconnect(HandleRef self) => GoogleSignInHelper.CallStatic("disconnect",new AndroidJavaObject(self.Handle)); |
| 158 | + static void GoogleSignIn_Disconnect(HandleRef self) => GoogleSignInHelper.CallStatic("disconnect",self.ToAndroidJavaObject()); |
155 | 159 |
|
156 |
| - internal static void GoogleSignIn_DisposeFuture(HandleRef self) => new AndroidJavaObject(self.Handle).Dispose(); |
| 160 | + internal static void GoogleSignIn_DisposeFuture(HandleRef self) => self.ToAndroidJavaObject().Dispose(); |
157 | 161 |
|
158 |
| - internal static bool GoogleSignIn_Pending(HandleRef self) => new AndroidJavaObject(self.Handle).Call<bool>("isPending"); |
| 162 | + internal static bool GoogleSignIn_Pending(HandleRef self) => self.ToAndroidJavaObject().Call<bool>("isPending"); |
159 | 163 |
|
160 |
| - internal static IntPtr GoogleSignIn_Result(HandleRef self) => new AndroidJavaObject(self.Handle).Call<AndroidJavaObject>("getAccount").GetRawObject(); |
| 164 | + internal static IntPtr GoogleSignIn_Result(HandleRef self) => self.ToAndroidJavaObject().Call<AndroidJavaObject>("getAccount").GetRawObject(); |
161 | 165 |
|
162 |
| - internal static int GoogleSignIn_Status(HandleRef self) => new AndroidJavaObject(self.Handle).Call<int>("getStatus"); |
| 166 | + internal static int GoogleSignIn_Status(HandleRef self) => self.ToAndroidJavaObject().Call<int>("getStatus"); |
163 | 167 |
|
164 |
| - internal static string GoogleSignIn_GetServerAuthCode(HandleRef self) => new AndroidJavaObject(self.Handle).Call<string>("getServerAuthCode"); |
| 168 | + internal static string GoogleSignIn_GetServerAuthCode(HandleRef self) => self.ToAndroidJavaObject().Call<string>("getServerAuthCode"); |
165 | 169 |
|
166 |
| - internal static string GoogleSignIn_GetDisplayName(HandleRef self) => new AndroidJavaObject(self.Handle).Call<string>("getDisplayName"); |
| 170 | + internal static string GoogleSignIn_GetDisplayName(HandleRef self) => self.ToAndroidJavaObject().Call<string>("getDisplayName"); |
167 | 171 |
|
168 |
| - internal static string GoogleSignIn_GetEmail(HandleRef self) => new AndroidJavaObject(self.Handle).Call<string>("getEmail"); |
| 172 | + internal static string GoogleSignIn_GetEmail(HandleRef self) => self.ToAndroidJavaObject().Call<string>("getEmail"); |
169 | 173 |
|
170 |
| - internal static string GoogleSignIn_GetFamilyName(HandleRef self) => new AndroidJavaObject(self.Handle).Call<string>("getFamilyName"); |
| 174 | + internal static string GoogleSignIn_GetFamilyName(HandleRef self) => self.ToAndroidJavaObject().Call<string>("getFamilyName"); |
171 | 175 |
|
172 |
| - internal static string GoogleSignIn_GetGivenName(HandleRef self) => new AndroidJavaObject(self.Handle).Call<string>("getGivenName"); |
| 176 | + internal static string GoogleSignIn_GetGivenName(HandleRef self) => self.ToAndroidJavaObject().Call<string>("getGivenName"); |
173 | 177 |
|
174 |
| - internal static string GoogleSignIn_GetIdToken(HandleRef self) => new AndroidJavaObject(self.Handle).Call<string>("getIdToken"); |
| 178 | + internal static string GoogleSignIn_GetIdToken(HandleRef self) => self.ToAndroidJavaObject().Call<string>("getIdToken"); |
175 | 179 |
|
176 |
| - internal static string GoogleSignIn_GetImageUrl(HandleRef self) => new AndroidJavaObject(self.Handle).Call<AndroidJavaObject>("getPhotoUrl").Call<string>("toString"); |
| 180 | + internal static string GoogleSignIn_GetImageUrl(HandleRef self) => self.ToAndroidJavaObject().Call<AndroidJavaObject>("getPhotoUrl").Call<string>("toString"); |
177 | 181 |
|
178 |
| - internal static string GoogleSignIn_GetUserId(HandleRef self) => new AndroidJavaObject(self.Handle).Call<string>("getId"); |
| 182 | + internal static string GoogleSignIn_GetUserId(HandleRef self) => self.ToAndroidJavaObject().Call<string>("getId"); |
179 | 183 | #else
|
180 | 184 | private const string DllName = "__Internal";
|
181 | 185 |
|
@@ -312,6 +316,28 @@ private static IntPtr GetPlayerActivity() {
|
312 | 316 | return jc.GetStatic<AndroidJavaObject>("currentActivity").GetRawObject();
|
313 | 317 | #else
|
314 | 318 | return IntPtr.Zero;
|
| 319 | +#endif |
| 320 | + } |
| 321 | + } |
| 322 | + |
| 323 | + public static class Ext |
| 324 | + { |
| 325 | +#if UNITY_2022_2_OR_NEWER |
| 326 | +#else |
| 327 | + static ConstructorInfo constructorInfo; |
| 328 | +#endif |
| 329 | + |
| 330 | + public static AndroidJavaObject ToAndroidJavaObject(in this HandleRef self) => self.Handle.ToAndroidJavaObject(); |
| 331 | + public static AndroidJavaObject ToAndroidJavaObject(in this IntPtr intPtr) |
| 332 | + { |
| 333 | +#if UNITY_2022_2_OR_NEWER |
| 334 | + return new AndroidJavaObject(intPtr); |
| 335 | +#else |
| 336 | + if(constructorInfo == null) |
| 337 | + constructorInfo = typeof(AndroidJavaObject).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,null,new[] { typeof(IntPtr) },null); |
| 338 | + |
| 339 | + Debug.Log(constructorInfo); |
| 340 | + return constructorInfo.Invoke(new object[] { intPtr }) as AndroidJavaObject; |
315 | 341 | #endif
|
316 | 342 | }
|
317 | 343 | }
|
|
0 commit comments