如何在模拟器中测试BOOT_COMPLETED广播接收器

时间:2012-07-04 09:08:59

标签: android android-emulator broadcastreceiver

我想在BROADCAST RECEIVER中查看BOOT_COMPLETED行动emulator

有没有办法在模拟器中检查广播接收器?如何重新启动模拟器来检查接收器?有没有直接命令?

提前致谢。

6 个答案:

答案 0 :(得分:54)

模拟器中没有像设备那样的电源按钮,所以

要停止模拟器实例,只需关闭模拟器的窗口。

Start/Restart从Eclipse的AVD Manager 开始,而带有BOOT_COMPLETE操作的BroadcastReceiver将被称为肯定

您也可以通过另一种方式启动AVD,从CMD 转到AndroidSDK工具并提供此命令E:\android-sdk-windows\tools>emulator -avd AVDNAMEHERE

从CMD发送广播,您可以使用此命令。

  

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


详细了解Android模拟器:Android EmulatorUsing Emulator

答案 1 :(得分:41)

基本上,这是在运行时模拟Android Emulater中的引导完成所要做的事情:假设您是 Windows 用户。同样适用于<强> 的Linux

步骤:在您的控制台类型

  1. adb shell

  2. am broadcast -a android.intent.action.BOOT_COMPLETED

  3. 这就是所有人。 请参阅下图以获取详细说明

    enter image description here

    快乐编码!

答案 2 :(得分:26)

如果两次收到BOOT_COMPLETED,有些应用可能会出错,而只是限制广播到您的包中:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -p com.example.package

答案 3 :(得分:2)

如果您正在使用flavor,请注意.组件名称快捷方式表示法。

实施例

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.companyname.develop/com.companyname.notification.RescheduleLocalNotificationsAtBootReceiver

答案 4 :(得分:1)

要重新启动模拟器,只需打开命令行并切换到adb所在的文件夹(如果不在系统路径中),然后输入:

adb restart

(然后您可以使用Strg-C中止命令以获取cmd行)

答案 5 :(得分:0)

在我的Lollipop模拟器上,它要求我以root用户身份运行:

adb shell su root am broadcast -a android.intent.action.BOOT_COMPLETED

没有root用户,命令失败-警报管理器不发送广播:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

Broadcasting: Intent { act=android.intent.action.BOOT_COMPLETED }
java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=26595, uid=2000
    at android.os.Parcel.readException(Parcel.java:1684)
    at android.os.Parcel.readException(Parcel.java:1637)
    at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3537)
    at com.android.commands.am.Am.sendBroadcast(Am.java:772)
    at com.android.commands.am.Am.onRun(Am.java:404)
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
    at com.android.commands.am.Am.main(Am.java:121)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)