Intereting Posts
Возможно ли иметь настраиваемые атрибуты в тегах AndroidManifest.xml? Шаблоны, когда следует использовать переход активности с динамическими фрагментами Android: В чем разница между приложением: srcCompat = "" and android: src = ""? Разметка XML-таблицы? Две строки EQUAL-width, заполненные кнопками одинаковой ширины? Проблема со вкусом Android Studio 3.0 EXTRA_PREVIOUS_SCAN_MODE всегда возвращает ошибку для Android Bluetooth Приложение несовместимо со всеми вашими устройствами Что такое "android.R.layout.simple_list_item_1"? Android: как я могу сказать, отображается ли мягкая клавиатура или нет? Запуск службы из активности Как я могу заставить свою службу Android работать, когда экран выключен? Android Split Action Bar с элементами действия сверху и снизу? Nexus 7 (2013) и Win 7 64 – не могут установить драйвер USB, несмотря на проверку многих форумов и онлайн-ресурсов Разница между проектом чистого проекта и восстановлением в студии Android Модернизация POST-запроса с базовой аутентификацией HTTP: «Невозможно повторить потоковое тело HTTP»

«Вызов этого из основного потока может привести к взаимоблокировке и / или ANR при получении accesToken» от GoogleAuthUtil (интеграция Google Plus в Android)

В моем приложении Android я пытаюсь получить AccessToken из GoogleAuthUtil, как показано ниже:

AccessToken = GoogleAuthUtil.getToken (это, mPlusClient.getAccountName (), "oauth2:" + SCOPES);

Но в этой строке я получаю ошибку, как показано ниже:

E / GoogleAuthUtil (4696): вызов этого из основного потока может привести к взаимоблокировке и / или ANRs E / GoogleAuthUtil (4696): java.lang.IllegalStateException: вызов этого из основного потока может привести к тупиковой ситуации E / GoogleAuthUtil (4696) : At com.google.android.gms.auth.GoogleAuthUtil.b (Неизвестный источник) E / GoogleAuthUtil (4696): at com.google.android.gms.auth.GoogleAuthUtil.getToken (Неизвестный источник) E / GoogleAuthUtil (4696) : At com.google.android.gms.auth.GoogleAuthUtil.getToken (Неизвестный источник)

Любое решение этой проблемы? Любая помощь будет оценена по достоинству.

Solutions Collecting From Web of "«Вызов этого из основного потока может привести к взаимоблокировке и / или ANR при получении accesToken» от GoogleAuthUtil (интеграция Google Plus в Android)"

Попробуйте с помощью AsyncTask:

AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... params) { String token = null; try { token = GoogleAuthUtil.getToken( MainActivity.this, mGoogleApiClient.getAccountName(), "oauth2:" + SCOPES); } catch (IOException transientEx) { // Network or server error, try later Log.e(TAG, transientEx.toString()); } catch (UserRecoverableAuthException e) { // Recover (with e.getIntent()) Log.e(TAG, e.toString()); Intent recover = e.getIntent(); startActivityForResult(recover, REQUEST_CODE_TOKEN_AUTH); } catch (GoogleAuthException authEx) { // The call is not ever expected to succeed // assuming you have already verified that // Google Play services is installed. Log.e(TAG, authEx.toString()); } return token; } @Override protected void onPostExecute(String token) { Log.i(TAG, "Access token retrieved:" + token); } }; task.execute(); 

SCOPES – это список разделенных пробелом строк OAuth 2.0. Например, SCOPES можно определить как:

 public static final String SCOPES = "https://www.googleapis.com/auth/plus.login " + "https://www.googleapis.com/auth/drive.file"; 

Они представляют собой разрешения, которые ваше приложение запрашивает у пользователя. Области, запрошенные в этом примере, описаны здесь:

Используйте отдельный поток для вашего интернет-кода. Ошибка говорит о том, что в приложении работает больше времени, и это интернет. Поэтому используйте отдельный поток или задачу Async.

Проверьте эту ссылку NetworkOnMainThreadException

Надеюсь, это поможет вам.

E / GoogleAuthUtil (4696): java.lang.IllegalStateException: вызов этого из основного потока может привести к взаимоблокировке

Похоже, вам нужно сделать это в отдельном потоке, вы пробовали это?

Здесь вы можете найти информацию о потоках в Android.

  Thread CrearEventoHilo = new Thread(){ public void run(){ //do something that retrun "Calling this from your main thread can lead to deadlock" } }; CrearEventoHilo.start(); CrearEventoHilo.interrupt();