Broadcastをエミュレートする

Android、やっぱりなんでもできるなぁと。開発段階でもいろいろできるように作られてるなぁと実感した。

やりたいこと

  • Android MarketのINSTALL_REFERRER(Broadcast)を、
  • Androidアプリ側でReceiveして(BroadcastReceiver)、
  • アプリがどのような挙動に成るか?

Broadcastする

コマンドラインから、adbを使う。
INSTALL_REFERRERであれば、

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER

となる。
通常、INSTALL_REFERRERは、Extra Stringを保持しているので、

 adb shell am broadcast -a com.android.vending.INSTALL_REFERRER --es <extra-key> <extra-string-value>

アプリ側の用意

アプリ側ではBroadcastReceiverを継承したクラスを作り、onReceiveをOverrideする
ちなみに、com.android.vendingから取得したい Extra String のキーは、"referrer"

package hoge.fuga;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class HogeFugaReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    String referrer = intent.getExtras().getString("referrer");
    Log.i("hogefuga", "referrer: " + referrer);
  }
}

で、

上記のBroadcastReceiverをエミュレーターでも実機でもいいから、adbが接続できるものにinstall
adbから、コマンド一発

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER --es referrer hoge

あとは、logcatを確認するだけ。