2

アプリがクラッシュしたことがある場合は /data/anr/traces.txt を送信したいのですが、問題は、アプリが以前にクラッシュしたことをどのように知ることができるかということです。

    File file = new File("/data/anr/traces.txt");
    if (file.exists()) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.putExtra("subject", file.getName());
        intent.putExtra("body", "...");
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));

        if (file.getName().endsWith(".gz")) {
            intent.setType("application/x-gzip");
        } else if (file.getName().endsWith(".txt")) {
            intent.setType("text/plain");
        } else {
            intent.setType("application/octet-stream");
        }

                    // ? Can I send it without permission?
        startActivity(intent);
    }
4

2 に答える 2

6

信頼できる方法の 1 つは、「ダーティ ビット」を使用することです。アプリの起動時にファイルに値を書き込み、正常にシャットダウンしたときに別の値をファイルに書き込みます。アプリを起動するたびに、ファイルに書き込む前にファイルの内容を確認してください。アプリが正常にシャットダウンしたときに書き込んだ値でない場合は、アプリがクラッシュしたことがわかります。

于 2012-10-11T01:20:45.357 に答える
2

または、ACRA http://code.google.com/p/acra/を使用できます。これにより、クラッシュ レポートをアプリ サーバー/サード パーティ サーバーに直接取得できます。

于 2012-10-11T02:16:55.377 に答える