Intentで巨大なファイルを共有する

2018/02/15

IntentはExtraな領域にデータを詰めることができますが、このデータ、実は上限が設けられています。

String text = "..."; // サイズ上限がある
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, text);

背景は画面遷移時にTransactionTooLargeExceptionが起きる | backportで書いたのと同じく、Parcelableだから、です。

実際にどのくらいのサイズまで行けるか、と言うと、Blog | The Intent extras size limitで詳細に実験してくれている通りで、ざっくり500KBくらい。

アプリ内のデータ受け渡しであれば対処法も一緒。メモリなりファイルなりに保存しておいてpointerとなる情報(IDとか)だけ受け渡す、というやり方でいけますね。

外のアプリとやり取りしたい、という場合はFileProviderを使うのがお手軽です。

Android Intent.ACTION_SEND from Internal Storage with Content Provider - Stack Overflow




関連(するかもしれない)記事


おススメ