🚀 6.5 Sincronização e Acesso à Google Agenda

Após o login bem-sucedido com Google Sign-In, o próximo passo é utilizar as credenciais obtidas para acessar a Google Agenda (Calendar API). No Android Studio 2023.1, fazemos isso integrando o GoogleSignInAccount com o cliente oficial do Google.

Configurando o Cliente da Agenda

Utilizamos o GoogleAccountCredential para autorizar nossas chamadas. Diferente do passado, não precisamos mais gerenciar tokens manualmente; o GMS cuida disso para nós:

private com.google.api.services.calendar.Calendar obterClienteAgenda(GoogleSignInAccount conta) {
    var credential = GoogleAccountCredential.usingOAuth2(
            this, Collections.singleton(CalendarScopes.CALENDAR));
    credential.setSelectedAccount(conta.getAccount());
 
    var transporte = AndroidHttp.newCompatibleTransport();
    var jsonFactory = GsonFactory.getDefaultInstance();
 
    return new com.google.api.services.calendar.Calendar.Builder(
            transporte, jsonFactory, credential)
            .setApplicationName("BoaViagem")
            .build();
}

Acesso Seguro em Segundo Plano (Java 17)

Requisições de rede para a Google Agenda não podem ocorrer na thread principal. Utilizamos o padrão de Executors para garantir uma execução fluida:

private void listarAgendas(GoogleSignInAccount conta) {
    var executor = Executors.newSingleThreadExecutor();
    
    executor.execute(() -> {
        try {
            var cliente = obterClienteAgenda(conta);
            var agendas = cliente.calendarList().list().execute().getItems();
            
            // Retorna para a thread principal para atualizar a UI
            runOnUiThread(() -> processarAgendas(agendas));
            
        } catch (IOException e) {
            Log.e("BOAVIAGEM", "Erro ao acessar a agenda", e);
        }
    });
}

IMPORTANT

Transporte de Dados: O uso do AndroidHttp.newCompatibleTransport() garante que o app escolha automaticamente a melhor engine de rede disponível no dispositivo (como OkHttp ou a nativa), otimizando a performance.

TIP

No Android 2023.1, sempre que trabalhar com APIs do Google, prefira as bibliotecas de cliente oficiais fornecidas via Gradle. Elas abstraem toda a complexidade do protocolo HTTP e do parsing de JSON, permitindo que você foque na lógica do seu app.


⬅️ Capítulo Anterior | Próximo Capítulo ➡️