Те, кто не смогли в шахматы

Есть люди, что способны все делать правильно на лету. 
А есть те, кто вынужден догонять первых методичным, 
маниакальным упорством и самоконтролем. 
Гением мне не стать, но мы ещё посмотрим, кто круче.


/**
 * Считываем результат дочерней активности
 *
 * @param requestCode
 * @param resultCode
 * @param data
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    boolean isLogging = false;

    try {

        if (logcat != null) {
            isLogging = logcat.isLogging();
            logcat.set_Logging(false);
            logcat.LogD(this, "Запущена функция onActivityResult");
        }

        switch (requestCode) { // В зависимости от того, какое дочернее окно вернуло результат

            case GoogleAuthProcess.RC_SIGN_IN: // Завершена авторизация

                // Считываем результат аутентификации
                GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

                if (logcat != null) logcat.LogD(this, "Получен результат авторизации...");

                // --------------- //
                // Проверка успеха //
                // --------------- //

                if (result.isSuccess()) { // Успешная авторизаци

                    final GoogleSignInAccount acct = result.getSignInAccount();

                    final String name = acct.getGivenName();

                    final String last_name = acct.getFamilyName();

                    final String email = acct.getEmail();

                    if (textUserName != null) {

                        textUserName.setText(name + " " + last_name);

                    }


                    if (textUserEMail != null) {

                        textUserEMail.setText(email);

                    }

                    final Uri photoUrl = acct.getPhotoUrl();

                    if (photoUrl != null) { // Если путь к логотипу получен

                        getUser().set_photo_Uri(photoUrl);

                        // ------------------------- //
                        // Попытка загрузки логотипа //
                        // ------------------------- //

                        final String path = photoUrl.toString(); // Преобразуем путь в строку

                        // Определяем обработчик результатов загрузки изображения

                        final IBhriguResultListener<Bitmap> listener = get_logo_listenter(); // END: listener

                        BhriguNetworkUtils._decode_bitmap_from_url( // Запускаем процес загрузки изображения
                                activity,
                                path,
                                TIMER_LOGO,
                                listener);

                    } // END: Запуск загрузки логотипа в случае успешной авторизации

                    mAuthorization_Status = AUTH_STATUS.AUTH_SUCCESS;

                    // Принудительный переход на вторую страницу
                    if (getCurrentFrameIndex() == PAGE_SIGNIN)
                        setCurrentFrameIndex(PAGE_DIRECTORY); // Закончена авторизация

                    // Прописываем в текущего пользователя полученные из авторизации данные
                    activity.setUser(getUser().set_name(name).set_lastName(last_name).set_email(email));

                    activity.runOnUiThread(new Runnable() { // Перерисовка
                        @Override
                        public void run() {

                            activity.setViewInvalidated();

                            activity.reDraw("Получен профиль пользователя: " + name);

                        }
                    });

                } else { // Не успешная авторизация

                    mAuthorization_Status = AUTH_STATUS.AUTH_FAIL;

                    if (activity.textUserName != null) activity.textUserName.setText("");

                    if (activity.textUserEMail != null)
                        activity.textUserEMail.setText("Неуспех авторизации");

                    if (activity.user_logo_nav != null)
                        activity.user_logo_nav.setImageResource(android.R.drawable.sym_def_app_icon);

                    try { // Сообщение пользователю

                        Toast.makeText(activity, "Не успех авторизации.", Toast.LENGTH_SHORT).show();

                    } catch (Exception e) {

                        // Ничего не делаем

                    } // END: Сообщение пользователю

                    activity.setViewInvalidated();

                    activity.reDraw("Неуспех получения профиля пользователя.");

                } // END: Проверка успешности авторизации

                final String text = "Авторизация вернула результат..." + result.getStatus();

                if (logcat != null) logcat.LogD(this, text);

                break;

            case IrmaMainActivity.ID_LIST_OF_FIELDS: // Активность редактирования полей MP3

                String message_activity_result_code = ""
                        + "Сработал код результата: "
                        + "id3_editor.ID_LIST_OF_FIELDS"
                        + " (" + IrmaMainActivity.ID_LIST_OF_FIELDS + ")";

                logcat.LogD("Обработка результата открытия дочерней активности", message_activity_result_code, "blue");

                if (resultCode == RESULT_OK) // Только если не было отмены

                    if (data != null) { // Проверка, передавало ли окно изменения свойств MP3 какие-либо данные

                        String error;

                        try { // Проверяем, пришло ли сообщение об ошибке в сообщении о результате

                            error = data.getStringExtra(TOKEN_ERROR);

                        } catch (Exception e) {

                            String message = ""
                                    + "Сбой получения описания ошибки в обработке результата возвращенного окном изменения MP3: "
                                    + e;

                            throw new Exception(message);

                        } // END: Проверяем, пришло ли сообщение об ошибке в сообщении о результате

                        String changes;

                        try { // Проверяем, пришло ли сообщение об изменнении в файле

                            changes = data.getStringExtra(TOKEN_CHANGES);

                        } catch (Exception e) {

                            String message = "Сбой получения признака изменения MP3 редактором полей ID3: " + e;

                            throw new Exception(message);

                        } // END: Проверяем, пришло ли сообщение об изменнении в файле

                        try { // Выводим на экран сообщение о возникшей ошибке, если таковая присутствовала

                            if (error != null) { // Если ошибки найдены

                                logcat.LogE(this, error);

                                new AlertWindow(logcat).createAlert("Ошибка", error).show();

                                IrmaDirListFragment dir_list_fragment = (IrmaDirListFragment) get_current_fragment();

                                dir_list_fragment.refresh_dir();

                            } else { // Ошибок нет

                                if (changes != null)

                                    if (changes.equals("YES")) {

                                        IrmaDirListFragment dir_list_fragment = (IrmaDirListFragment) get_current_fragment();

                                        dir_list_fragment.refresh_dir();

                                    }

                                setViewInvalidated(); // Требуется перезагрузка фрагмента
                                reDraw("Закрылось окно просмотра содержимого полей ID3.");

                            }

                        } catch (Exception e1) {

                            logcat.LogD(this, "Не удалось вывести диалог с описанием ошибки на экран: " + e1);

                        }

                    } else {

                        logcat.LogE(this, "Окно изменения свойств MP3 не передало данные основному.");

                        //Refresh_current_fragment();

                    }

                break;

            case GoogleAuthProcess.REQUEST_CODE_RECOVER_FROM_PLAY_SERVICES_ERROR: // Обработка реакции пользователя на запрос авторизации на доступ к данным профиля

                message_activity_result_code = ""
                        + "Сработал код результата: "
                        + "GoogleGoogleAuthProcess.REQUEST_CODE_RECOVER_FROM_PLAY_SERVICES_ERROR"
                        + " (" + GoogleAuthProcess.REQUEST_CODE_RECOVER_FROM_PLAY_SERVICES_ERROR + ")";

                logcat.LogD(
                        "Обработка результата открытия дочерней активности",
                        message_activity_result_code, "blue");

                requestCode = RESULT_CANCELED;

                String message1 = ""
                        + "Обнаружена реакция на диалог запроса разрешения от польователя."
                        + LogCatLog.EOS
                        + "Результат: " + resultCode;


                logcat.LogD(this, message1);

                if (resultCode == -1) { // Разрешение получено

                    logcat.LogD("OnActivityResult", "Пользователь подтвердил права доступа к учетной записи...");

                } else { // Пользователь не дал разрешение на доступ к учетной  записи.

                    // Создаем диалог

                    final String message_user_mast_select_profile = ""
                            + "Вы должны дать разрешение на доступ к данным "
                            + "вашего профиля для завершения регистрации.";

                    new AlertWindow(logcat)

                            .createAlert_two_buttons(

                                    "Ошибка", // Заголовок диалога
                                    message_user_mast_select_profile, // Сообщение пользователю
                                    "Повторить", // Заголовок клавиши 1


                                    new Thread() { // Об

                                        @Override
                                        public void run() {

                                            try {

                                                GetUserProfile(getUser()); // Повторный вызов запроса профиля пользователя

                                            } catch (Exception e) {

                                                logcat.LogE(this, "Ошибка получения данных профиля пользователя : " + e);

                                            }

                                        }
                                    },
                                    "Отменить",
                                    new Thread() {

                                        @Override
                                        public void run() {
                                            finish();
                                        }
                                    }

                            ).show();
                }


                break;

            case GoogleAuthProcess.REQUEST_CODE_PICK_ACCOUNT: // Если результат пришел от актвиности выбора аккаунта

                message_activity_result_code = ""
                        + "Сработал код результата: "
                        + "GoogleGoogleAuthProcess.REQUEST_CODE_PICK_ACCOUNT"
                        + " (" + GoogleAuthProcess.REQUEST_CODE_PICK_ACCOUNT + ")";

                logcat.LogD("onActivityResult", message_activity_result_code, "blue");

                if (resultCode == RESULT_OK) { // Если пользователь выбрал

                    // Считываем из экстра имя аккаунта (email)
                    String email = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);

                    if (email != null)
                        logcat.LogD(this, "Получен следующий меил пользователя от окна выбора аккаутов: " + email);
                    else
                        throw new CriticalException(activity, "Пользователь выбрал аккаунт, но  данные почты не пришли.");

                    getUser().set_email(email);

                    try { // Запрашиваем из профиля пользователя его учетные данные - имя пользователя

                        GetUserProfile(getUser());

                    } catch (CriticalException e) {

                        throw e;

                    } catch (OutOfMemoryError e) { // Нехватка памяти - отправляем наверх

                        try {
                            logcat.NoMemoryAlert();
                        } catch (Exception e1) {
                            e1.printStackTrace();
                        }

                        throw e;

                    } catch (Throwable e) { // Другие ошибки - реагируем

                        String message = "Ошибка повторного запроса профиля пользователя: " + e;

                        logcat.LogE(this, message);

                    }

                    // Пользователь отказался от выбора аккаунта

                } else if (resultCode == RESULT_CANCELED) {

                    logcat.LogE(this, "Пользователь не выбрал аккаунт. Закрываю программу.");

                    final String message_to_user_select_account = ""
                            + "Хозяин, если вы не выберите аккаунт я вынужден буду закрыть программу! "
                            + "Выберите аккаунт или создайте, пожалуйства, новый!";

                    new AlertWindow(logcat).createAlert_two_buttons(
                            "Внимание!", // Заголовок окна
                            message_to_user_select_account, // Сообщение пользователю
                            "Повторить", // Заголовок клавиши 1
                            new Thread() { // Реакция на повторить

                                @Override
                                public void run() {

                                    pickUserAccount();

                                }
                            },
                            "Закрыть", // Заголовок клавиши 2
                            new Thread() { // Реакция на закрыть

                                @Override
                                public void run() {

                                    // Ничего не делаем
                                    finish();

                                }
                            }

                    ).show();

                }

                break;

            case GoogleAuthProcess.REQUEST_CODE_RECOVER_FROM_AUTH_ERROR:

                message_activity_result_code = ""
                        + "Сработал код результата: "
                        + "GoogleGoogleAuthProcess.REQUEST_CODE_RECOVER_FROM_AUTH_ERROR"
                        + " (" + GoogleAuthProcess.REQUEST_CODE_RECOVER_FROM_AUTH_ERROR + ")";

                logcat.LogD(
                        "Обработка результата открытия дочерней активности",
                        message_activity_result_code, "blue");


                if (resultCode == RESULT_OK) {

                    String message = ""
                            + "Сработал GoogleGoogleAuthProcess.REQUEST_CODE_RECOVER_FROM_AUTH_ERROR "
                            + "или "
                            + "REQUEST_CODE_RECOVER_FROM_PLAY_SERVICES_ERROR";

                    logcat.LogD("onActivityResult", message);

                    try {
                        Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
                    } catch (Exception e) {
                        // Ничего не делаем
                    }

                    return;
                }

                break;

        } // Конец switch

    } catch (OutOfMemoryError e) { // Нехватка памяти - отправляем наверх

        try {
            logcat.NoMemoryAlert();
        } catch (Exception e1) {
            e1.printStackTrace();
        }

        throw e;

    } catch (Throwable e) { // Другие ошибки - реагируем

        String message = "Сбой функции обработки результата активации: " + e;

        throw new CriticalException(activity, message);

    } finally {

        logcat.set_Logging(isLogging);

    }

    super.onActivityResult(requestCode, resultCode, data);

} // Конец функции onActivityResult
nektome.blog https://nektome.blog/ +7 (927) 2893774
| Комментариев: 3
    Новых комментариев: 0
  1. 0
    А в отпуске оно не наступает?
    Neko: У того, кто стремиться к своей цели не может быть отпусков.
    #
    Написал аноним
  2. 0
    я тоже хочу чувство глубокого удовлетворения
    Neko: Оно возникает, когда то, что казалось сложным или вообще невозможным - реализуется. Много упорной работы. Много-много. Стройная система, последовательный план.
    #
    Написал аноним