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