18

Since the phone restarts and thus gets disconnected from the Eclipse debugger/LogCat while it's booting up, how do I see where my boot complete broadcast receiver is crashing?

I am performing some actions in the onReceive() of my public class BootCompleteReceiver extends BroadcastReceiver { ... }

This is crashing and popping up a force close dialog when the phone boots. How do I debug this and see where the problem is?

The question holds true for debugging any BOOT_COMPLETE broadcast receivers.

Thanks!

EDIT

Yes, we can see the system logs in LogCat as the phone is booting up but my app Log.d(TAG,"Boot completed") has to wait till it (onReceive) gets triggered but by that time the app crashes because the problem is somewhere in the receiver itself. The app crashes before I can log anything. Also, I cannot use "Run in Debug mode" for a phone that's restarting...

4

4 に答える 4

79

私が別のスレッドに書いたように:

adb 経由でデバイスに接続し、デバイス シェルを開くことで、すべてのブロードキャスト アクションをエミュレートできます。

どうぞ:

  • コンソール/ターミナルを開き、/platform-tools に移動します
  • 「adb shell」と入力するか、linux/mac では「./adb shell」と入力します。
  • シェルタイプで「am broadcast -a android.intent.action.BOOT_COMPLETED」または起動したいアクションを入力します。

このようにして、デバッグできるはずです。

adb や adb shell には便利なコマンドがたくさんあります。やってみなよ

よろしくフロー

編集: 上記の方法を使用すると、デバイスも再起動します。デバイスが再起動しないようにするには、am broadcast -a android.intent.action.BOOT_COMPLETED com.example.app. ブロードキャスト先のアプリケーション パッケージ名の接尾辞に注意してください。これにより、デバッグ目的で BOOT_COMPLETED インテントを自分のアプリのみに送信できます。–ロエル・ファン・ウーデン

于 2012-04-11T11:39:33.007 に答える
2

レシーバーはコードの実行時 (つまり、電話の起動時) のみを制御します。デバッグ中にコードを手動で実行します。この方法で問題の 99% を解決でき、残りの問題 (ある場合) は LogCat に書き込むことで解決できるので、コードの動作を確認してください。

于 2012-04-10T10:30:08.233 に答える
1

受信しているインテントのアクションとバンドルを確認してください。それらは null である可能性があり、null ポインター例外である可能性があります。

于 2012-04-10T10:44:09.387 に答える