is there something I'm missing? - Yes, I afraid there is.
the reason you don't receive broadcast with the same intent filter that activity do catch is simple:
the application that triggers this event (gmail application in your example) is starting implicit activity , and not sending broadcast.
what means that if no broadcast is been sent - then you can forget about receive it via BroadcastReceiver
no work around that, instead of launching your own activity.
starting implicit activity instead of sending broadcast with ACTION_VIEW
is making sense, because after all - ACTION_VIEW
is all about showing something, so it won't make sense that in reaction to user click on file - something will happened only in background.
you right that launching and imidatly finishing activity in that case is a bad user experience, but not showing anything visible is event worse - the user will continue clicking because he think that nothing happens...
what I would do instead of you - show special meaningful activity that visualize whatever processing you are doing instead of doing it only in background, and when the process finish - finish also the activity.