Android中如何通过Intent的putExtra获取BluetoothDevice对象?
解决Intent传递BluetoothDevice对象的获取问题
问题根源
BluetoothDevice类实现的是Parcelable接口,而非Serializable接口,你用getSerializableExtra()获取自然会出现类型不匹配的问题,强制转换也无法解决本质问题。
修正方案
将目标页面的获取代码替换为getParcelableExtra(),并正确进行类型转换:
修正后的NextActivity代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ble_device_control); Intent intent = getIntent(); // 针对Android 13以下版本,强制转换类型 btDevice = (BluetoothDevice) intent.getParcelableExtra("btDevice"); // 如果是Android 13及以上版本,推荐使用带泛型的重载方法 // btDevice = intent.getParcelableExtra("btDevice", BluetoothDevice.class); }
补充说明
Android系统中,Intent传递对象时支持两种序列化方式:Parcelable和Serializable。BluetoothDevice官方实现的是Parcelable,所以必须用对应的getParcelableExtra()方法来获取,系统才能正确完成对象的反序列化。
内容的提问来源于stack exchange,提问作者tonykrjhc
相关产品推荐
相关产品推荐

