如何检测Wear OS设备连接的是安卓手机还是iPhone以适配授权流程?
判断Wear OS设备连接的手机类型(安卓/iPhone)
可以通过Wear OS提供的系统API直接判断当前配对的手机类型,以此来切换对应的授权流程,具体实现如下:
核心判断方法
使用CompanionDeviceManager API获取已配对的关联设备信息,通过DeviceInfo中的deviceType字段区分设备类型:
- 连接安卓手机时,
deviceType对应DEVICE_TYPE_PHONE,此时执行PKCE授权流程 - 连接iPhone时,
deviceType对应DEVICE_TYPE_IOS,此时执行DAG授权流程
代码示例(Kotlin)
val companionDeviceManager = getSystemService(CompanionDeviceManager::class.java) val pairedDevices = companionDeviceManager.getAssociatedDevices() // 取第一个配对设备(Wear OS通常仅配对一个手机) pairedDevices.firstOrNull()?.let { device -> when (device.deviceType) { DeviceInfo.DEVICE_TYPE_PHONE -> { // 启动PKCE授权流程 } DeviceInfo.DEVICE_TYPE_IOS -> { // 启动DAG授权流程 } } }
注意事项
- 应用需声明
android.permission.REQUEST_COMPANION_PROFILE_WATCH权限,并在Manifest中正确配置companion应用的关联关系 - 针对部分旧版Wear OS,如果没有
DEVICE_TYPE_IOS枚举值,可辅助通过设备名称(如包含"iPhone"关键字)或设备ID格式做补充判断,但这种方式可靠性低于系统API判断
内容的提问来源于stack exchange,提问作者Kostya Rudenko
相关产品推荐
相关产品推荐

