如何获取android phone 用户的google 账户名?
How to get android phone user's google account name?
所以我正在用unity引擎制作手机游戏,想发布到android目标。
现在我的游戏会有自己的自定义排行榜,我认为当用户获得分数时,游戏应该将他的身份昵称、分数发送到服务器。
所以为了获取他的不同名称,我想获取他的 google 帐户名。 (当然我可以选择接收用户输入昵称的选项,但是,好烦)
我只需要电子邮件格式的前半部分(即用户名)
例如,如果用户的 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);
}
在统一方面,我将脚本附加到 'Main Camera' 对象并编写,
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);
}
但是当我 运行 在我的 phone 创建 .apk 文件后,没有读取帐户名。
怎么了?
如果你有一个字符串 asdf@gmail.com 并且你想要 @ 之前的所有内容,你可以使用 .split();
String email = asdf@gmail.com
String[] parts = email.split("@");
String nickname = parts[0];
试试这个
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 清单添加权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
所以我正在用unity引擎制作手机游戏,想发布到android目标。
现在我的游戏会有自己的自定义排行榜,我认为当用户获得分数时,游戏应该将他的身份昵称、分数发送到服务器。
所以为了获取他的不同名称,我想获取他的 google 帐户名。 (当然我可以选择接收用户输入昵称的选项,但是,好烦)
我只需要电子邮件格式的前半部分(即用户名) 例如,如果用户的 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);
}
在统一方面,我将脚本附加到 'Main Camera' 对象并编写,
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);
}
但是当我 运行 在我的 phone 创建 .apk 文件后,没有读取帐户名。
怎么了?
如果你有一个字符串 asdf@gmail.com 并且你想要 @ 之前的所有内容,你可以使用 .split();
String email = asdf@gmail.com
String[] parts = email.split("@");
String nickname = parts[0];
试试这个
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 清单添加权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" />