【问题标题】:How to get android phone user's google account name?如何获取安卓手机用户的谷歌账户名?
【发布时间】:2015-04-17 03:37:51
【问题描述】:

所以我正在用unity引擎制作手机游戏,考虑发布到android目标。

现在我的游戏会有我自己的自定义高分板,我认为当用户获得分数时,游戏应该将他的身份昵称,分数发送到服务器。

所以为了得到他独特的名字,我想得到他的谷歌帐户名。 (当然我可以选择接收用户输入昵称的选项,但是,很烦人)

我只需要电子邮件格式的前面部分(即用户名) 例如,如果用户的 google 帐户是 asdf@gmail.com ,我只想提取“asdf”。

那么,该怎么做呢?

这是获得他独特昵称的好方法吗?

谢谢。


所以我确实喜欢这个,但不起作用。

public class MainActivity extends UnityPlayerActivity implements        AndroidInterface{
private String usergoogleName;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    GetUserName();      
} 
public void GetUserName(){
    AccountManager manager = AccountManager.get(this);
    Account[] accounts = manager.getAccountsByType("com.google");
    List<String> username = new LinkedList<String>();

    for (Account account : accounts) {
        username.add(account.name);
    }
    usergoogleName = username.get(0);
    sendMessage("Main Camera", "JavaMsg", usergoogleName);
}

@Override
public void sendMessage(String target, String method, String params) {
    // TODO Auto-generated method stub
    UnityPlayer.UnitySendMessage(target, method, params);
}

在统一方面,我将脚本附加到“主相机”对象并写入,

public string name;
public void JavaMsg(string str){
    name = str;
}
void OnGUI(){
    GUI.Label(new Rect(100, 200, 300, 100), "google account name is " + name);
}

但是当我在制作 .apk 文件后在手机上运行它时,不读取帐户名。

怎么了?

【问题讨论】:

标签: android google-account


【解决方案1】:

试试这个

AccountManager manager = AccountManager.get(context);
Account[] accounts = manager.getAccountsByType("com.google");
List<String> username = new LinkedList<String>();

for (Account account : accounts) {
    username.add(account.name);
}

并为 android manifest 添加权限

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

【讨论】:

  • 谢谢,那我可以在unity和c#中使用这段代码而不需要任何额外的.dll或插件文件吗?
  • 感谢您的链接,但它超出了我需要的范围。那么在android-unity插件的java代码中写上上面的代码,当游戏开始时,将那个username变量发送给unity并使用它?
  • 这里的“上下文”是什么? AccountManager 经理 = AccountManager.get(context);我想看完整的代码。
  • 在你的活动中可以使用'this'而不是上下文
【解决方案2】:

如果您有一个字符串 asdf@gmail.com 并且想要 @ 之前的所有内容,则可以使用 .split();

String email = asdf@gmail.com
String[] parts = email.split("@");
String nickname = parts[0];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2020-10-25
    • 2011-05-10
    • 1970-01-01
    • 2020-10-20
    • 2012-12-16
    • 1970-01-01
    相关资源
    最近更新 更多