📘
[Android] EXTRA_INITIAL_INTENTSでカスタムの共有シートを無くせるケース・無くせないケース
背景
DroidKaigi 2023の「共有」セッションを拝見して、
自分が開発しているアプリのカスタム共有シートを無くせるかどうか、検証してみた。
結論
EXTRA_INITIAL_INTENTSで渡したIntentは、最初の2つしか標準の共有シートに表示されない。
なので、この制限でやりたい事が実現できるなら、カスタムの共有シートを無くせる。
補足
EXTRA_INITIAL_INTENTSについて
標準の共有シートに対して、
- アイテムの並び替え
- SEND以外のactionを渡す
- 追加の引数を渡す
をおこなえる。
自分が開発しているアプリがなぜカスタム共有シートを使っているのか
一部の共有先(XとLINE)に対しては、共有で渡すテキストをカスタマイズしたいため。
EXTRA_INITIAL_INTENTSの制限について
上記の記事で言及されているとおり、
EXTRA_INITIAL_INTENTSで渡されたIntentは最大で2つまでしか標準の共有シートで使われない様子。
今でも、MAX_EXTRA_INITIAL_INTENTS = 2のままだった。
EXTRA_INITIAL_INTENTSでアプリアイコンを標準の共有シートに表示する
Intentに対してsetPackageするだけだとアプリアイコンが表示出来ないっぽい。
setClassNameで、Activityを指定すれば大丈夫。
Discussion
related issue
2個までしか表示出来ない件は "Won't fix(INtended behavior)" でクローズされている。