添付ファイルの MIME Type を返す関数も[Android]拡張子からMIME Typeを返す関数 | DevAchieveで作ったし、
クラッシュレポートを JSON で送信出来れば
コマンドラインJSONプロセッサ jq をインスールする でフォーマットして見れるし、
データがいっぱい集まったら MongoDB に JSON をインポートして見れたら楽しそう!
このようにクラッシュレポート送信機能を作り始めたがどうにもファイルが添付できない。
Intent#ACTION_SEND | Android Developersによると
setType で添付ファイルの MIME Type を指定する必要があるようなので application/json を指定するも
メーラー側が text/plain と image/* にしか(?)対応していなくて添付できない。
諦めてテキストファイルを送信することにしました。
Intent intent = createSendMailIntent(mailto, subject, body); intent = addFile(intent, attachmentFile);Utilクラスに以下のコードをコピペしておくと呼び出しが上記だけで済む。
/**
* メールを送信するIntentを作成する
*
* @param mailto
* @param subject
* @param body
*/
public static Intent createSendMailIntent(String mailto, String subject, String body){
return createSendMailIntent(new String[]{ mailto }, new String[]{}, new String[]{}, subject, body);
}
/**
* メールを送信するIntentを作成する
*
* @param mailto
* @param subject
* @param body
*/
public static Intent createSendMailIntent(String[] mailto, String subject, String body){
return createSendMailIntent(mailto, new String[]{}, new String[]{}, subject, body);
}
/**
* メールを送信するIntentを作成する
*
* @param mailto
* @param cc
* @param bcc
* @param subject
* @param body
*/
public static Intent createSendMailIntent(String[] mailto, String[] cc, String[] bcc, String subject, String body){
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType(HTTP.PLAIN_TEXT_TYPE);
intent.putExtra(Intent.EXTRA_EMAIL, mailto);
intent.putExtra(Intent.EXTRA_CC, cc);
intent.putExtra(Intent.EXTRA_BCC, bcc);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, body);
return intent;
}
/**
* メールIntentにファイルを添付する
*
* @param intent
* @param filePath
* @return
*/
public static Intent addFile(Intent intent, String filePath){
return addFile(intent, new File(filePath));
}
/**
* メールIntentにファイルを添付する
*
* @param intent
* @param file
* @return
*/
public static Intent addFile(Intent intent, File file){
return addFile(intent, Uri.fromFile(file), getMimeType(file));
}
/**
* メールIntentにファイルを添付する
*
* @param intent
* @param uri
* @param mimeType
* @return
*/
public static Intent addFile(Intent intent, Uri uri, String mimeType){
intent.setType(mimeType);
intent.putExtra(Intent.EXTRA_STREAM, uri);
return intent;
}