---
title: 'Android OkHttp TrafficStats UntaggedSocketViolation'
url: 'https://blog.anael.eu/developpement/android-okhttp-trafficstats-untaggedsocketviolation'
markdown: 'https://blog.anael.eu/developpement/android-okhttp-trafficstats-untaggedsocketviolation.md'
lang: fr
date: '2026-10-25'
description: "Android : erreur UntaggedSocketViolation lors de l'utilisation de OkHttp OkHttp peut créer des sockets non taggués, dans des threads enfants (ou réutilisés), ce qui génère des erreurs Logcat pour l'application. Pour corriger cela, il ne sert à rien de TrafficStats.setThreadStatsTag dans le thread…"
---

# Android : erreur UntaggedSocketViolation lors de l'utilisation de OkHttp

> OkHttp peut créer des sockets non taggués, dans des threads enfants (ou réutilisés), ce qui génère des erreurs Logcat pour l'application.

Pour corriger cela, il ne sert à rien de `TrafficStats.setThreadStatsTag` dans le thread parent, puisqu'il ne sera pas descendu correctement jusqu'à OkHttp de par sa manière de fonctionner.

Il faut ajouter un EventListener sur la création du Client qui se chargera de tagguer directement le socket :

```java
OkHttpClient client = new OkHttpClient.Builder()
       .eventListener(getEventListener())
```

---

```java
    public final int tagSocket = 1234;
    public EventListener getEventListener() {
        return new EventListener() {
            @Override
            public void connectStart(@NonNull Call call, @NonNull InetSocketAddress inetSocketAddress, @NonNull Proxy proxy) {
                // Injecter un tag custom
                if(TrafficStats.getThreadStatsTag() != tagSocket) {
                    // Fix UntaggedSocketViolation: Untagged socket detected; use TrafficStats.setThreadSocketTag() to track all network usage
                    TrafficStats.setThreadStatsTag(tagSocket);
                }
            }

            @Override
            public void connectEnd(@NonNull Call call, @NonNull InetSocketAddress inetSocketAddress, @NonNull Proxy proxy, Protocol protocol) {
                TrafficStats.clearThreadStatsTag();
            }
        };
```

---

## Navigation

- Parent: [Développement](https://blog.anael.eu/developpement.md)
- Next: [Images sur un site](https://blog.anael.eu/developpement/images-sur-un-site.md)
