[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();
}