アプリのインストール完了を検知する


Androidでは、アプリケーションのインストールが完了したことを検知することが可能です。
アプリケーションのインストールの完了を検知できれば、アプリのインストールに合わせて起動するようなアプリケーションを作成することも可能です。

<2012/01/31 onReceiveメソッドからのActivityの起動について追記しました。>

アプリケーションのインストールが完了すると、BroadcastIntentが投げられます。
投げられたIntentをBroadcastReceiverでキャッチすることで、インストール完了時に処理を行えるようにします。
今回は、アプリケーションのインストールが完了した際に、以下のようなActivityを起動してみたいと思います。

それでは続きで詳しく見ていきましょう。

BroadcastReceiverの作成

アプリケーションのインストールが完了すると、「android.intent.action.PACKAGE_ADDED」のBroadcastIntentが発生します。
つまり、これをキャッチできるようなBroadcastReceiverを作成すれば、インストールの完了を検知できます。
BroadcastReceiverはAndroidManifest.xmlに以下のように定義します。

AndroidManifest.xml

<application
  android:icon="@drawable/ic_launcher"
  android:label="@string/app_name" >
  (...省略...)
  <receiver android:name="org.techbooster.sample.installreferrer.InstallReciever" >
    <intent-filter>
      <action android:name="android.intent.action.PACKAGE_ADDED" />
      <data android:scheme="package"/>
    </intent-filter>
  </receiver>
</application>

7行目で、actionのnameプロパティーに android.intent.action.PACKAGE_ADDED を指定しています。
これで、IntentがBroadcastされると同時にreceiverタグのname属性に指定したBroadcastReceiver(を継承したクラス)が起動することになります。
また、パッケージを指定して起動するために、8行目でschemeに”package”を指定する必要があるので注意します。

なお、BroadcastReceiver内での処理は以下のようになっています。

public class InstallReciever extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		intent.setClass(context, InstallNotifiActivity.class);
		context.startActivity(intent);
	}
}

BroadcastReceiver内からActivityを起動するには、onReceiveメソッドの引数にintentが渡されてくるので、これを利用して起動したいActivity(ここでは InstallNotifiActivity.class)を呼び出すようにします。
[追記]また、新たにActivityを起動するため、Intent.FLAG_ACTIVITY_NEW_TASKフラグをintentにセットします。[追記]

アプリケーション削除完了の検出

アプリケーションがインストールされたことを検知する方法と同じ方法で、アプリケーションの削除も検知することが可能です。
アプリケーションが削除されるときにも、インストール時と同様BroadcastIntentが発生します。
android.intent.action.PACKAGE_REMOVED」を先ほどと同じようにBroadcastReceiverとして定義するだけです。

<intent-filter>
  <action android:name="android.intent.action.PACKAGE_REMOVED" />
  <data android:scheme="package"/>
</intent-filter>

他にも、以下のような検知が可能です。
[table “187” not found /]

アプリケーションのインストール、アンインストールと同時にアプリを起動したい、通知したいという方は、一度試してみてはどうでしょうか。

関連する記事: