2015-04-17 3 views
1

Так что я делаю мобильную игру с движком единства, думаю, чтобы отпустить на цель андроида.Как получить имя учетной записи google для телефона Android?

Теперь в моей игре будет моя собственная доска для рекордов, там, я думаю, когда пользователь заработает счет, игра должна отправить его личный псевдоним, забить на сервер.

Так что для получения его отличного имени, я думаю, чтобы получить его имя учетной записи google. (Я, конечно, можно выбрать вариант, который получают ввод пользователя для его прозвища, но хорошо, утомительно)

я просто нужно только переднюю часть формата электронной почты (т.е. будет имя пользователя) Например, если Google учетная запись пользователя является [email protected] , Я хочу извлечь только «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 файл, не читает счета имя.

Что не так?

+0

Рассматривали ли вы с помощью Google Play апи Игр? https://developers.google.com/games/services/common/concepts/leaderboards –

+0

@TristanWiley Я не могу использовать это, потому что мой издатель не разрешает сторонние сервисы. – leegod

ответ

6

попробовать это

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); 
} 

и добавить разрешение на андроид манифеста

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

Спасибо, тогда я могу использовать этот код в единицах и C# без каких-либо дополнительных DLL-файлов или файлов плагинов? – leegod

+0

просто щекоть его, http://hintdesk.com/android-use-accountmanager-with-asp-net-identity/ – Nooh

+0

Спасибо за вашу ссылку, но это больше, чем мне нужно. Поэтому напишите выше код в java-коде плагина android-unity, и когда игра начнется, отправьте эту переменную имени пользователя в единицу и используйте ее? – leegod

3

Если у вас есть строка [email protected], и вы хотите все до @, вы можете использовать .split();

String email = [email protected] 
String[] parts = email.split("@"); 
String nickname = parts[0];