【发布时间】:2017-08-21 10:59:02
【问题描述】:
我正在尝试使用 google 帐户作为用户名创建一个注册和登录系统,我想知道有没有办法将 android 设备上的所有 google 帐户作为字符串并将它们全部放在一个数组中?
【问题讨论】:
-
回复内容非常丰富,而且有很多不同的部分。您需要开始检查 gmail 的 Google api 并从 Unity3d 调用 restservice。但答案是肯定的,有办法做到这一点。
我正在尝试使用 google 帐户作为用户名创建一个注册和登录系统,我想知道有没有办法将 android 设备上的所有 google 帐户作为字符串并将它们全部放在一个数组中?
【问题讨论】:
此答案基于我在 Java 中的other 答案。通过使用AndroidJavaClass 和AndroidJavaObject,您根本不需要Java 代码和jar/aar 插件。这一切都将通过 C# 完成。
string[] getAndroidEmailAccounts()
{
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass ACManager = new AndroidJavaClass("android.accounts.AccountManager");
AndroidJavaObject ACManagerAct = ACManager.CallStatic<AndroidJavaObject>("get", currentActivity);
AndroidJavaObject accounts = ACManagerAct.Call<AndroidJavaObject>("getAccountsByType", "com.google");
AndroidJavaObject[] accountArray = AndroidJNIHelper.ConvertFromJNIArray<AndroidJavaObject[]>(accounts.GetRawObject());
string[] accountName = new string[accountArray.Length];
for (int i = 0; i < accountName.Length; i++)
{
accountName[i] = accountArray[i].Get<string>("name");
}
return accountName;
}
您需要在清单中获得此权限:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
This 帖子描述了如何在 Unity 项目中使用 Manifest。
【讨论】: