【Android】アプリのインストールを検知する
今回は、Androidでアプリのインストールを検知する方法を解説します。
なお、ここに掲載しているソースコードは以下の環境で動作確認しています。
- Android Studio Chipmunk | 2021.2.1
- JDK 11.0.12
- Android Gradle Plugin 7.2.0
- Kotlin 1.6.21
- Gradle 7.4.2
アプリのインストールを検知する方法
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を使ってインストールされたアプリのパッケージ名を取得することができるため、期待するアプリがインストールされたのか判断することも可能です。