(正確なアクション名は"com.android.vending.INSTALL_REFERRER")
開発中のアプリに組み込むライブラリの関係上、これを2つのBroadcastReceiverで受け取る必要が出てきました。
今までの自分の理解では、Broadcastは複数のレシーバに送信されるイメージでした。
UDPみたいなイメージです(自分のUDPのイメージも間違ってるかもしれません)。
それがこのINSTALL_REFERRERについては、通用しませんでした。
Google Play側で1アプリにINSTALL_REFERRERを受信する2つのBroadcastReceiverがあると送信しないようにしているんでしょうか…。
そのため、以下のような実装を行いました。
public class CustomReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AReceiver a = new AReceiver();
a.onReceive(context, intent);
BReceiver b = new BReceiver();
b.onReceive(context, intent);
}
}
たぶんこれで動作するようになったはず…。
BroadcastReceiverって自分でインスタンス作っても良いんです?
これが正しい実装なんです?
イマイチすっきりしません。
すっきりしないので、サンプルアプリを作って確認してみました。
1つのアプリで、同じアクションを受け取る2つのBroadcastReceiverを定義して、adbからコマンド打って流してみたのです。
結果は2つともちゃんと受信しました…。
やっぱり受信しますよね。
Google Play側でそういう実装にしてるということなんですかねぇ…。
詳しい方がいましたら教えていただけると幸いですmm