1. 问题描述:
Android 7.0 上先后执行 clearDeviceOwnerApp(String packageName) 和 设备管理器之后,发现再重新激活设备管理器的时候,会抛出异常:
|
|
2. 分析问题原因:
问题造成的原因看日志大概就是激活设备管理器的时候,但设备管理器已经移除了。
经过一番分析后,发现在 7.0 设备上执行 clearDeviceOwnerApp(String packageName) 方法的同时也会去自动调用 removeActiveAdmin(ComponentName admin) 方法,
在 7.0 以下设备上,执行 cleardeviceowner() 的方法不会去调用 removeActiveAdmin(ComponentName admin) 方法,因此,在 7.0 设备上移除 deviceowner 后再去调用 removeActiveAdmin(ComponentName admin) 方法时,会导致一直在移除中,从而无法再次激活设备管理器。
3.解决方法:
1) 根据 Android os 版本号来判断是否需要手动调用 removeActiveAdmin(ComponentName admin) 方法;
|
|
2)在移除设备管理器之前判断其是否在移除中,若不在移除中,则执行 removeActiveAdmin(ComponentName admin) 方法;
|
|
至此,该坑已经填完!