| 1️⃣ Infos système & appareil — Toutes accessibles sans autorisation ; sûres pour l’analyse/télémétrie. |
| Modèle de l'appareil | "device_model": "Pixel 7" | Build.MODEL | Identifie le modèle (ex. : « Pixel 7 »). |
| Fabricant | "manufacturer": "Google" | Build.MANUFACTURER | Fabricant de l’appareil (ex. : « Google »). |
| Version Android | "android_version": "14" | Build.VERSION.RELEASE | Version de l’OS (ex. : « 14 »). |
| Version SDK | "sdk_int": 34 | Build.VERSION.SDK_INT | Niveau API (ex. : 34 pour Android 14). |
| Nom de l’appareil | "device_name": "walleye" | Build.DEVICE | Nom de code interne (ex. : « walleye »). |
| Marque | "brand": "Samsung" | Build.BRAND | Marque de l’appareil (ex. : « Samsung »). |
| Matériel | "hardware": "exynos9820" | Build.HARDWARE | Identifiant matériel (ex. : « exynos9820 »). |
| Architecture CPU | "cpu_abi": ["arm64-v8a"] | Build.SUPPORTED_ABIS | Tableau des ABIs supportés. |
| Langue du système | "locale": "fr-FR" | Locale.getDefault().toString() | Langue et région (ex. : « fr-FR »). |
| Fuseau horaire | "timezone": "Europe/Paris" | TimeZone.getDefault().getID() | Fuseau de l’appareil. |
| 2️⃣ Infos réseau (basiques) — Données réseau limitées sans ACCESS_NETWORK_STATE. |
| Type de connexion (WebView) | "network_type": "4g" | navigator.connection.type (JS WebView) | Via WebView ; ex. : « 4g », « wifi ». |
| IP publique | "ip_address": "logged_server_side" | Journal côté serveur | Le client ne peut pas l’obtenir de façon fiable. |
| Proxy | "proxy": "none" | System.getProperty("http.proxyHost") | Souvent inutile ; renvoie l’hôte proxy ou « none ». |
| 3️⃣ Infos sur l’app — Toujours accessibles. |
| Version de l’app | "app_version": "1.0.0" | PackageManager.getPackageInfo().versionName | Depuis build.gradle. |
| Code version | "version_code": 1 | PackageManager.getPackageInfo().versionCode | Depuis build.gradle. |
| Nom du package | "package_name": "com.example.myapp" | context.packageName | Identifiant unique. |
| Premier lancement | "first_launch": true | SharedPreferences | Flag conservé en SharedPreferences. |
| UUID local | "device_uuid": "generated-uuid" | UUID.randomUUID() + SharedPreferences | Généré & sauvegardé localement. |
| 4️⃣ Données d’usage (analytics basique) — Sans autorisation. |
| Date/heure actuelle | "timestamp": "2025-07-05T23:03:00Z" | System.currentTimeMillis() + SimpleDateFormat | Format UTC ISO 8601. |
| Durée de session | "session_duration": 145 | Logique de l’app | Temps en ms ou s. |
| Pages/écrans vus | "screen_view": "Accueil" | Logique de l’app | Nom de l’écran ou de l’Activity. |
| Clics/taps | "event": "button_clicked" | Logique de l’app | Interactions utilisateur. |
| Erreurs JS | "js_error": "TypeError at script.js:10" | window.onerror (JS WebView) | Capturer erreurs JS ; `window.onerror` requis. |
| 5️⃣ Stockage local (WebView) — Sécurisé, sans autorisation. |
| LocalStorage | "local_storage": {"key": "value"} | localStorage (JS WebView) | Clés/valeurs internes. |
| Cookies | "cookies": {"session_id": "abc123"} | document.cookie (JS WebView) | Cookies du domaine WebView. |
| 6️⃣ Capacités de l’appareil — Sans autorisation. |
| Orientation | "orientation": "portrait" | context.resources.configuration.orientation | « portrait » ou « landscape ». |
| Largeur écran | "screen_width": 1080 | context.resources.displayMetrics.widthPixels | En pixels. |
| Hauteur écran | "screen_height": 1920 | context.resources.displayMetrics.heightPixels | En pixels. |
| Densité écran | "density": 3.0 | context.resources.displayMetrics.density | Ex. : 3.0 pour xxxhdpi. |
| Mode sombre | "dark_mode": true | UI_MODE_NIGHT_MASK | Vrai si activé. |
| Niveau batterie | "battery_level": 87 | BatteryManager.getIntProperty() | % batterie (API 21+). |
| ❌ Données restreintes — Autorisation explicite requise ; jamais contourner. |
| Contacts | N/A | READ_CONTACTS | Permission « dangereuse ». |
| SMS | N/A | READ_SMS | Permission « dangereuse ». |
| Numéro/IMEI | N/A | READ_PHONE_STATE | Restreint. |
| Historique appels | N/A | READ_CALL_LOG | Permission « dangereuse ». |
| Localisation GPS | N/A | ACCESS_FINE_LOCATION | Permission « dangereuse ». |
| Numéro série unique | N/A | API 26+ | Inaccessible sans autorisation. |