由于手机重启并因此在启动时与Eclipse调试器/ LogCat断开连接,如何查看启动完整广播接收器崩溃的位置?
我正在我的onReceive()中执行一些操作 public class BootCompleteReceiver扩展BroadcastReceiver { ... }
当手机启动时,这会崩溃并弹出一个强制关闭对话框。如何调试此问题并查看问题所在?
这个问题适用于调试任何BOOT_COMPLETE
广播接收器。
谢谢!
修改
是的,我们可以看到系统登录LogCat,因为手机正在启动但我的应用程序Log.d(TAG,“Boot completed”)必须等到它(onReceive)被触发但是到那时应用程序崩溃了因为问题出在接收器本身的某个地方。在我可以记录任何内容之前,应用程序崩溃了。另外,对于正在重启的手机,我无法使用“在调试模式下运行”...
答案 0 :(得分:73)
正如我在另一个帖子上写的那样:
您可以通过adb连接到设备并打开设备外壳来模拟所有广播操作。
我们走了:
这样你就可以调试了。
adb或adb shell附带了许多不错的命令。试试吧
关心Flo
修改强>
使用上述方法也将重启设备。要阻止设备重新启动,请使用am broadcast -a android.intent.action.BOOT_COMPLETED com.example.app
。请注意广播所使用的应用程序包名称的后缀。这使您可以将BOOT_COMPLETED意图仅发送到您的应用程序以进行调试。 - Roel van Uden
答案 1 :(得分:2)
接收器仅控制代码运行时(即手机启动时)。在调试时,请手动运行代码。您可以通过这种方式解决99%的问题,并通过写入LogCat解决剩下的问题(如果有的话),以便了解您的代码正在做什么。
答案 2 :(得分:1)
检查您正在接收的Intents操作和包,它们可能为null并且可能是空指针异常。
答案 3 :(得分:1)
只需在Android Studio中放入终端
即可 adb shell am broadcast -a android.intent.action.BOOT_COMPLETE