es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Leer nombre de usuario desde la cuenta de GoogleSignInAccount (API de Google Fit para Android)

Estoy utilizando la API de Google Fit para recuperar datos de fitness y todo funciona a la perfección. También quiero acceder al nombre del usuario actualmente conectado, que debería ser accesible mediante GoogleSignInAccount.getDisplayName();

Ya hice esta pregunta pero desafortunadamente no recibí ninguna respuesta, y no puedo resolverlo con la documentación.

Código de ejemplo:

 //Crear una instancia de FitnessOptions, declarando los tipos de datos y el tipo de acceso (lectura y/o escritura) que necesita tu aplicación:
        FitnessOptions fitnessOptions = FitnessOptions.builder()
                .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
                .addDataType(DataType.TYPE_SLEEP_SEGMENT, FitnessOptions.ACCESS_READ)
                .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
                .addDataType(DataType.AGGREGATE_HEART_RATE_SUMMARY, FitnessOptions.ACCESS_READ)
                .build();

    //Obtener una instancia del objeto Account para utilizarlo con la API:
    GoogleSignInAccount account = GoogleSignIn.getAccountForExtension(this, fitnessOptions);
    GoogleSignInAccount acct = GoogleSignIn.getLastSignedInAccount(this);

    if (acct != null) {
        loggedInUser = account.getDisplayName();
    }

El problema es que acct.getDisplayname().getGrantedScopes funciona perfectamente, y veo el ámbito concedido. Cuando intento leer .getDisplayName siempre obtengo NULL.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema al acceder al nombre de visualización del usuario actualmente conectado con GoogleSignInAccount.getDisplayName(). Una posible solución sería verificar si el objeto GoogleSignInAccount devuelto por GoogleSignIn.getLastSignedInAccount() no es nulo, y luego acceder al nombre de visualización a través de ese objeto en lugar del devuelto por GoogleSignIn.getAccountForExtension(). El bloque de código modificado podría verse así:

    FitnessOptions fitnessOptions = FitnessOptions.builder()
                    .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
                    .addDataType(DataType.TYPE_SLEEP_SEGMENT, FitnessOptions.ACCESS_READ)
                    .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
                    .addDataType(DataType.AGGREGATE_HEART_RATE_SUMMARY, FitnessOptions.ACCESS_READ)
                    .build();
    
            GoogleSignInAccount acct = GoogleSignIn.getLastSignedInAccount(this);
    
            if (acct != null) {
                loggedInUser = acct.getDisplayName();
            }
    

    Si esto no funciona, podría valer la pena contactar al equipo de soporte de la API de Google Fit para obtener más ayuda.

Comments are closed.