2

當我試圖通過這種方式來獲得的Android O設備上Blutooth地址:Secure.getString(mContext.getContentResolver(), 「bluetooth_address」)返回的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();    
    } 
} 

所有代碼以上工作我仍然使用Anroid O(8.0)的代碼,它返回macAddress = null。

回答

2

您的應用程序將需要保持LOCAL_MAC_ADDRESS權限:

Settings.Secure.bluetooth_address:藍牙設備的MAC地址。在O中,這僅適用於擁有LOCAL_MAC_ADDRESS權限的應用程序。

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

然而,LOCAL_MAC_ADDRESS permission is a system permission所以實際上您的應用程序不能擁有它。

+0

我按照你的方式提問之前,但代碼不工作,因爲「LOCAL_MAC_ADDRESS權限是一個系統權限,所以在實踐中你的應用程序不能擁有它。」就像你說的 。那麼,沒有任何解決方案可以在Android O上獲得藍牙地址? –

+0

您想通過獲取地址解決什麼問題? – laalto

+0

我使用藍牙地址在我的應用程序中識別我的設備。你有任何想法來解決這個問題? –