6

重複の可能性:
メインスレッドがクラッシュした場合、UncaughtExceptionHandler からアクティビティを開始する方法は?

私の目標は、Android プログラムがクラッシュしたときにエラー メッセージを表示することです。

プログラムのアプリケーション (MyApplication) onCreate にキャッチされていない例外ハンドラーが登録されています。

Thread.setDefaultUncaughtExceptionHandler(new HelloUncaughtExceptionHandler());

例外がキャッチされたら、ユーザーがバグを保存/送信するための新しいアクティビティを開始したいと思います。これは私が現在行っていることです:

class HelloUncaughtExceptionHandler implements UncaughtExceptionHandler {
    @Override
    public void uncaughtException(Thread thread, Throwable e) {
        final Writer result = new StringWriter();
        final PrintWriter printWriter = new PrintWriter(result);
        e.printStackTrace(printWriter);
        String stacktrace = result.toString();
        printWriter.close();

        Intent intent = new Intent(MyApplication.this,
                BugReportActivity.class);
        intent.putExtra("stacktrace", stacktrace);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
}

BugReportActivity が表示されずに空白の画面が表示されます (アクティビティから開始すると正常に動作します)。「MyApplication.this」が心配です...アプリケーションから任意のアクティビティを起動する方法は本当にありませんか?

皆さんありがとう。

4

0 に答える 0