Как запросить разрешение входа в Google для определенного почтового идентификатора (учетной записи Google) в Android Studio? - PullRequest
0 голосов
/ 05 ноября 2019

Я подключаю свое приложение к Google Fit, используя API Fit для получения данных о состоянии здоровья, таких как шаги, калории, частота сердечных сокращений, местоположение и т. Д. Для этого мне необходимо получить необходимые разрешения. Как только приложение откроется, пользователь введет свои учетные данные, а затем приложение запросит разрешения для конкретной учетной записи Google.

Я уже реализовал код для получения разрешений. И это работает нормально. Когда приложение запускается, пользователя просят дать разрешения, и всплывающее окно содержит список учетных записей Google, в зависимости от того, вошли ли на устройстве. Пользователь выбирает одну учетную запись Google, а затем разрешает / запрещает разрешения.

AndroidManifest.xml

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>

Создание FitnessOptions для передачи разрешений:

private FitnessOptions getFitnessSignInOptions(){
    // request access to various data from fit history.
    return FitnessOptions.builder()
            .addDataType(DataType.TYPE_STEP_COUNT_CUMULATIVE)
            .addDataType(DataType.TYPE_STEP_COUNT_DELTA)
            .addDataType(DataType.TYPE_CALORIES_EXPENDED)
            .addDataType(DataType.TYPE_MOVE_MINUTES)
            .addDataType(DataType.TYPE_ACTIVITY_SEGMENT)
            .addDataType(DataType.TYPE_LOCATION_SAMPLE)
            .addDataType(DataType.AGGREGATE_HEART_RATE_SUMMARY)
            .addDataType(DataType.TYPE_ACTIVITY_SEGMENT)
            .build();
}

ИспользованиеFitnessOptions для получения запроса на разрешения:

private void requestFitnessPermission () {

    FitnessOptions fitnessOptions = getFitnessSignInOptions();     if(!GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this), fitnessOptions)){
        GoogleSignIn.requestPermissions(
                this,
                REQUEST_OAUTH_REQUEST_CODE,
                GoogleSignIn.getLastSignedInAccount(this),
                getFitnessSignInOptions());
        //Log.i(TAG,GoogleSignIn.getLastSignedInAccount(this).toString());
    } else if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=
            PackageManager.PERMISSION_GRANTED){
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                REQUEST_LOCATION_REQUEST_CODE);
    }
}

Результат запроса разрешения на данный момент: всплывающее окно разрешения запрашивает выбор учетной записи Google среди многих учетных записей.

Ожидаемый результат. Во всплывающем окне должна отображаться только одна учетная запись Google и запрашиваться разрешение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...