ページ

2013/05/19

[Android]独自クラッシュレポート送信機能を実装する レポート送信編

[Android]独自クラッシュレポート送信機能を実装する レポート作成編 | DevAchieve
クラッシュレポートをテキストファイルに書き出すところまでは行ったので
後はファイルが有るかどうかチェックして送信するだけです。
私は自分のサーバを持っていないのでメールで送ることにしました。

いくつかのメソッドについては説明は省略しますが、動きはメソッド名通りです。
アプリ内ストレージに保存したレポートファイルを SD に移して
他のアプリで添付できるようにします。
直接 SD に保存しても良いのだけれど
startActivity した直後 delete してるとメール送信時には消えてしまうので注意です。
File file = getFileStreamPath(this, CrashExceptionHandler.FILE_NAME);
if(file.exists() && checkSdCardStatus()){
    String attachmentFilePath = Environment.getExternalStorageDirectory().getPath() + File.separator + getString(R.string.appName) + File.separator + CrashExceptionHandler.FILE_NAME;
    File attachmentFile = new File(attachmentFilePath);
    if(!attachmentFile.getParentFile().exists()){
        attachmentFile.getParentFile().mkdirs();
    }
    file.renameTo(attachmentFile);
    Intent intent = createSendMailIntent(CrashExceptionHandler.MAILTO, getString(R.string.reportMailTitle), getString(R.string.reportMailBody));
    intent = addFile(intent, attachmentFile);
    Intent gmailIntent = createGmailIntent(intent);
    if(canIntent(this, gmailIntent)){
        startActivity(gmailIntent);
    }else if(canIntent(this, intent)){
        startActivity(Intent.createChooser(intent, getString(R.string.sendCrashReport)));
    }else{
        showToast(this, R.string.mailerNotFound);
    }
    file.delete();
}