【问题标题】:How to reboot emulator to test ACTION_BOOT_COMPLETED?如何重新启动模拟器以测试 ACTION_BOOT_COMPLETED?
【发布时间】:2012-03-03 17:48:30
【问题描述】:

好吧,我已经搜索了很多。人们说我需要关闭模拟器的窗口才能关闭它。但是,我需要重新启动模拟器才能通过我的BroadcastReceiver 捕获ACTION_BOOT_COMPLETED

我该怎么做?

【问题讨论】:

    标签: android emulation reboot


    【解决方案1】:

    在android标签上使用tubemate时,我没有成功下载error:host interupped等的视频。我使用了以下命令:

    adb shell stop
    adb shell start
    

    应用程序开始下载视频。

    【讨论】:

      【解决方案2】:

      或者其他方式(也可以从命令行):

      adb shell stop
      adb shell start
      

      【讨论】:

      • 是的,我能够通过这种方式验证我的 onReceive 是否被称为监听 BOOT_COMPLETED。但是,由于调试器分离,我没有命中断点,但我在 DDMS 中看到了我的日志语句。
      • 在 Android Studio 终端中,我在 Android 7.1.1 模拟器运行时收到消息 stop: must be root
      【解决方案3】:

      要模拟广播动作,您可以通过 adb 连接到模拟器/设备并打开 shell:

      adb shell
      

      然后,你可以广播你想测试的动作:

      am broadcast -a android.intent.action.BOOT_COMPLETED
      

      请注意,在最新的 Android 版本中,广播 *android.intent.action.BOOT_COMPLETED* 操作实际上会重新启动您的模拟器/设备。

      【讨论】:

      • 在 Android 模拟器 7.1.1 上,我在终端上收到以下消息:java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=6832, uid=2000
      【解决方案4】:

      您可以使用 adb 中的以下命令:

      adb shell am activity/service/broadcast -a ACTION -c CATEGORY -n NAME
      

      例如:

      adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n package_name/class_name
      

      请注意,类名和包名需要与 Manifest 中定义的一致。

      这将生成您想要的 Intent,仅定向到您想要的组件(否则您的系统会因为发送 BOOT_COMPLETED 而发疯......)

      【讨论】:

      • 谢谢。代码看起来很棒。目前我没有时间测试。但我发现,不使用快照,模拟器的启动和关闭速度要快得多 :-) 我喜欢它!
      • 当我从 Android Studio 终端(运行 Android 7.1.1 的模拟器)执行该操作时,我收到消息 java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=7432, uid=2000
      【解决方案5】:

      首先,确保从模拟器中启用 USB 调试:

      点击:

      • 主页图标
      • 菜单图标
      • “设置”
      • “应用程序”
      • '发展'
      • 确保“USB 调试”旁边的框包含复选标记

      从命令行:

      adb -e reboot
      

      编辑:

      这绝对行不通……很奇怪。我对其进行了测试,无法使模拟器重新启动。它只是挂起。

      【讨论】:

      • 请问,您能否告诉我您是否成功运行了adb reboot?我运行了 45 分钟,进程 emulator-arm 一直使用 50% 的 CPU。它没有响应:-(
      【解决方案6】:

      还有另一种方式:

      如果您启动模拟器并选中“擦除用户数据”复选框,您也会在启动完成时收到该通知。

      【讨论】:

      • 但是如果我擦除数据,我安装的应用程序将被擦除:-)
      • 您是否测试过“擦除使用数据”实际上会擦除已安装的应用程序?我相信它会擦除应用程序存储的数据(首选项、缓存等),而不是应用程序本身......
      • @DavidDraughn,抱歉回复晚了...但它会删除所有内容并返回原始内容。
      【解决方案7】:

      模拟器有开/关按钮 - 只需点击它

      【讨论】:

      • 当我点击电源按钮(并按住 2 或 3 秒)时,它就像真正的设备一样:它向我显示静音模式/飞行模式/关机菜单。我点击关闭电源,但是我无法打开它:-(。它一直显示“正在关机...”
      • 按住电源键有帮助(当前最新的模拟器版本)
      猜你喜欢
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 2016-03-20
      • 2011-07-23
      • 2021-07-26
      • 2023-03-18
      • 2021-11-16
      • 2017-09-10
      相关资源
      最近更新 更多