2

Wenn ich versuche, Blutooth-Adresse auf Android O-Gerät auf diese Weise zu erhalten:Secure.getString (mContext.getContentResolver() "bluetooth_address") return null in Android O

private String getBlutoothAddress(Context mContext){ 
    // Check version API Android 
    BluetoothAdapter myBluetoothAdapter; 

    String macAddress; 

    int currentApiVersion = android.os.Build.VERSION.SDK_INT; 

    if (currentApiVersion >= android.os.Build.VERSION_CODES.M) { 
     macAddress = Settings.Secure.getString(mContext.getContentResolver(), "bluetooth_address"); 
    } else { 
     // Do this for phones running an SDK before lollipop 
     macAddress = myBluetoothAdapter.getAddress();    
    } 
} 

Alle angezeigten Code arbeiten Nun, ich benutze den Code für Anroid O (8.0), es ist Return macAddress = null.

Antwort

2

Ihre Anwendung müssten die LOCAL_MAC_ADDRESS Erlaubnis halten:

Settings.Secure.bluetooth_address: Gerät Bluetooth-MAC-Adresse. In O ist dies nur für Apps verfügbar, die die Berechtigung LOCAL_MAC_ADDRESS besitzen.

https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

Allerdings kann die LOCAL_MAC_ADDRESS permission is a system permission so in der Praxis Ihre App nicht haben.

+0

Ich folge Ihrem Weg vor der Frage, aber Code funktioniert nicht, weil "Die LOCAL_MAC_ADDRESS Erlaubnis ist eine Systemerlaubnis so in der Praxis kann Ihre App es nicht haben." Wie du es sagst . Also keine Lösung, um Bluetooth-Adresse auf Android O zu bekommen? –

+0

Was ist das Problem, das Sie lösen möchten, indem Sie die Adresse erhalten? – laalto

+0

Ich verwende Bluetooth-Adresse, um mein Gerät in meiner App zu identifizieren. Sie haben eine Idee, dieses Problem zu lösen? –

0

Da Sie nur Ihr Gerät identifizieren möchten, können Sie getImei() von TelephonyManager API verwenden. Beachten Sie, dass Sie requestREAD_PHONE_STATEpermission vom Benutzer benötigen, da es die gefährliche Schutzstufe hat.

Wenn sich eine solche API in Ihren Tests als nicht zuverlässig erweist, suchen Sie bitte nach alternativen Wegen (die ihre eigenen Nachteile haben) aus diesen anderen zwei Fragen: Unique Android Device ID und Serial Number of Android device.