ADB接收广播BOOT_COMPLETE

时间:2012-10-26 16:44:42

标签: android adb boot

我想等到Android手机启动 并且MediaScanner已完成。

之后我想使用adb执行操作。

adb wait-for-device将在手机启动序列完成之前完成。

如何捕获,例如BOOT_COMPLETE通过ADB广播? 类似的东西:wait-for-boot-complete。 我不知道这是否可行?

3 个答案:

答案 0 :(得分:11)

您可以继续查询sys.boot_completeddev.bootcomplete系统属性。

至于代码,我不知道您使用的是什么环境和/或脚本语言。这很简单。首先,您需要通过手机软件找到启动完成时将哪个属性设置为“1”。我们说它是dev.bootcomplete。然后,以下命令会在手机启动后将控制权返回给您的脚本

adb wait-for-device shell 'while [[ -z $(getprop dev.bootcomplete) ]] ; do sleep 1; done'

答案 1 :(得分:4)

对于那些在Windows环境中工作的人来说,这个批处理脚本适合我。

它等待ADB守护程序运行,然后开始轮询sys.boot_completed属性并等待值1.

它并不像单行一样优雅,但我在我的PATH环境变量中列出了脚本,因此可以直接调用它。

adb wait-for-device

:CheckAgain
set value=
for /f "delims=" %%a in ('adb shell getprop sys.boot_completed') do @set value=%%a

IF NOT "%value%" == "1" (
    timeout /t 2 /nobreak >NUL
    goto CheckAgain
)

答案 2 :(得分:0)

如果您的设备没有安装busybox(请参阅shell script in android gives [: not found),您可以尝试在计算机中进行迭代。像这样的东西会起作用:

while [ `adb shell getprop dev.bootcomplete` -nq "1" ] ; do sleep 1; done

如果您的设备安装了busybox,您可以按照Alex P.评论进行操作:

adb shell 'while [ ""`getprop dev.bootcomplete` != "1" ] ; do sleep 1; done'

当然语法取决于您的机器(POSIX等)。