最近更新到 WearOS 4.0 后,我们目前面临 Samsung Galaxy Watch 4 (sm-r860) / Samsung Galaxy Watch 5 (sm-r900) / Samsung Galaxy Watch 6 (sm-r930) 的挑战性问题。我们的移动设备管理 (MDM) 系统和 Watch 应用程序与 WearOS 3.5 无缝协作,但现在在安装或更新 Watch 应用程序时遇到困难。
我们经常遇到的错误是:
无法在安全 FRP 中安装软件包
以下是问题的摘要以及我们迄今为止所做的尝试:
亚行命令:
使用亚行命令
adb shell settings put secure secure_frp_mode 0
Run Code Online (Sandbox Code Playgroud)
暂时解决了该问题,但这对我们来说不是一个可行的解决方案,因为它需要启用开发人员选项,这对于远程设备来说是不可行的。
设备策略管理器:
mDevicePolicyManager.setGlobalSetting(mAdminComponentName, Settings.Secure.SECURE_FRP_MODE, "0")
mDevicePolicyManager.setSecureSetting(mAdminComponentName, Settings.Secure.SECURE_FRP_MODE, "0")
Run Code Online (Sandbox Code Playgroud)
尝试使用mDevicePolicyManager更改设置,但遇到安全异常:
java.lang.SecurityException:权限被拒绝:设备所有者无法更新 secure_frp_mode。
恢复出厂设置保护策略:
我探索了FactoryResetProtectionPolicy API,但 getFactoryResetProtectionPolicy 和 isFactoryResetProtectionEnabled 方法都返回 NULL。使用 setFactoryResetProtectionPolicy 设置策略并FactoryResetProtectionPolicy.Builder().setFactoryResetProtectionEnabled(false).build()
不能解决问题。
如何在我的 MDM 系统中解决此问题?
我尝试使用以下指南阅读 Android Wear(三星 Galaxy Watch 4)的步行步骤:https://developer.android.com/training/wearables/health-services/active。
这是我的代码的一部分:
val healthClient = HealthServices.getClient(this /*context*/)
val measureClient = healthClient.measureClient
lifecycleScope.launch {
val capabilities = measureClient.capabilities.await()
supportsStepCount =
DataType.WALKING_STEPS in capabilities.supportedDataTypesMeasure
}
Run Code Online (Sandbox Code Playgroud)
但我收到这个异常:
Connection to service is not available for package 'com.google.android.wearable.healthservices' and action 'com.google.android.wearable.healthservices.MeasureClient'.
2021-09-07 11:04:18.112 4523-6821/com.daftar.galaxyface E/ServiceConnection: Connection disconnected and maximum number of retries reached.
java.util.concurrent.CancellationException: Service not available
at androidx.health.services.client.impl.ipc.internal.ServiceConnection.connect(ServiceConnection.java:145)
at androidx.health.services.client.impl.ipc.internal.ServiceConnection.enqueue(ServiceConnection.java:203)
at androidx.health.services.client.impl.ipc.internal.ConnectionManager.handleMessage(ConnectionManager.java:123)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:246)
at android.os.HandlerThread.run(HandlerThread.java:67)
Run Code Online (Sandbox Code Playgroud)
注意:上面的指南中有一个注释是获取权限,但没有提到哪些权限。我尝试了 ACTIVITY_RECOGNITION 和 BODY_SENSORS 和 ACCESS_FINE_LOCATION,但没有成功。
watch-face-api watchface android-wear-2.0 wearables samsung-galaxy-watch