以统一的方式获取android上的所有gmail帐户

时间:2017-08-21 10:59:03

标签: c# unity3d

我正在尝试使用谷歌帐户作为用户名创建一个注册和登录系统,我想知道是否有办法将Android设备上的所有谷歌帐户都作为字符串并将它们全部放入数组?

1 个答案:

答案 0 :(得分:1)

这个答案是基于我在Java中的other答案。通过使用AndroidJavaClassAndroidJavaObject,您根本不需要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。