取得非 null 的 BluetoothAdapter 實例,呼叫 getName() 與 getAddress() 均返回 null 或空字串。
BluetoothAdapter.getDefaultAdapter() 返回介面卡物件,但底層藍牙無線電關閉時,名稱/地址可能為空。需先 adapter.enable() 或引導使用者開啟。AndroidManifest.xml 缺少 BLUETOOTH、BLUETOOTH_ADMIN (API 31+ 需 BLUETOOTH_CONNECT) 權限。ACCESS_FINE_LOCATION 才能掃描/獲取藍牙資訊。BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null) {
// 裝置不支援藍牙
} else {
if (!adapter.isEnabled()) {
Intent enableBt = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBt, REQUEST_ENABLE_BT);
}
// 確保權限已授予 (API 23+)
String name = adapter.getName(); // 可能為 null,預設為 "Android"
String address = adapter.getAddress(); // 格式 "XX:XX:XX:XX:XX:XX"
}
onResume 中檢查藍牙狀態與權限。BluetoothManager (API 18+) 取得 BluetoothAdapter 更可靠。BluetoothAdapter.getBluetoothLeScanner() 進行低功耗掃描。