Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

【Android】アプリのインストールを検知する

今回は、Androidでアプリのインストールを検知する方法を解説します。

なお、ここに掲載しているソースコードは以下の環境で動作確認しています。

アプリのインストールを検知する方法

Android OSは、アプリがインストールされると android.intent.action.PACKAGE_ADDED というインテントを発信します。よって、このインテントをBroadcastReceiverにて受信することにより、アプリのインストールを検知することができます。

マニフェストファイルの変更

まず、マニフェストファイル AndroidManifest.xml に以下の設定を追加します。

<receiver
    android:name=".PackageChangedReceiver"
    android:enabled="true"
    android:exported="false">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="package" />
    </intent-filter>
</receiver>

BroadcastReceiverの実装

そして、以下のようにBroadcastReceiverを実装します。

public final class PackageChangedReceiver extends BroadcastReceiver {

    @NonNull
    private static final String TAG = "PackageChangedReceiver";

    @Override
    public void onReceive(final Context context, final Intent intent) {
        // intent#getDataStringからインストールされたアプリのパッケージ名を取得できる。
        final String packageName = intent.getDataString();
        Log.d("PackageChanged", packageName);
    }
}

以上の実装により、アプリのインストールを検知できるようになります。

また、intent#getDataStringを使ってインストールされたアプリのパッケージ名を取得することができるため、期待するアプリがインストールされたのか判断することも可能です。