出于测试目的,我想通过ADB停止并重新启动我的Android Wear Watch Face服务。停止它似乎工作正常:
adb shell am force-stop com.package.name
但再次启动该服务让我感到困惑。Watch Faces是而不是活动,因此无法通过am start
启动。我尝试在包上使用monkey
命令,但不起作用。我尝试手动启动该服务:
adb shell am startservice com.package.name/.watch_face_service
但这似乎不起作用;要么该服务未启动,要么该服务已启动但不是当前的墙纸。
这肯定是可能的,因为当我运行或调试时,Eclipse会设法启动Watch Faces。但如何做到呢?
经过多天的研究,我得出的结论是这是不可能的。
所有墙纸服务都需要BIND_WALLPAPER
权限:
字符串:BIND_WallPaper:必须是墙纸服务所必需的,以确保只有系统可以绑定到它。
...这意味着只有系统服务才能启动墙纸。
Android操作系统可能有一些硬编码的巫毒魔法,它将自动启动通过Eclipse或Android Studio安装的任何手表--这是我最好的猜测,因为这两个IDE都没有运行任何ADB命令来启动墙纸。