2017-02-22 3 views
0

J'essaie d'obtenir l'adresse MAC des appareils Android via Settings.Secure, en utilisant le code suivant:adresse Bluetooth via Settings.Secure

String btMac = android.provider.Settings.Secure.getString(getApplicationContext().getContentResolver(), "bluetooth_address"); 

Il travaille pour plusieurs appareils que je l'ai essayé, y compris Samsung Galaxy S6/S7/Pixel/Nexus5. Cependant, sur certains téléphones plus anciens tels qu'un HTC One X (4.2.2), et un autre téléphone Android générique (4.1), la chaîne est nulle.

Est-ce une version Android? Ou s'agit-il d'un problème de génération de fournisseur, c'est-à-dire que "bluetooth_address" n'existe pas dans Settings.Secure pour ces versions. Est-il possible de voir ce qui est disponible dans Settings.Secure pour ces appareils?

Merci.

Éditer: Cela pourrait-il être dû au fait que BluetoothManager a seulement été introduit en 4.3, et que "bluetooth_name" existe dans BluetoothManagerService.java, qui n'existe pas avant 4.3?

+0

Même si vous comprenez pourquoi cela se produit, vous découvrirez que Android 6.0+ ne permet pas d'application de lire tout matériel adresse. Je ne sais pas ce que vous avez besoin de cela, mais vous devriez lire plus ici: https://developer.android.com/training/articles/user-data-ids.html#version_specific_details_identifiers_in_m –

+0

Cela fonctionne réellement pour Android 6.0+ (testé sur le S7/Pixel/Nexus 5). Cela ne fonctionne pas pour les périphériques plus anciens sur 4.1/4.2. Je pense que c'est parce que BluetoothManager a seulement été introduit en 4.3. – user1118764

Répondre

0

Ainsi depuis BluetoothManager n'a été introduit en 4.3, ce n'est pas possible avant Android 4.3