Android11以下でアプリのインストールを検知できない

84 views
Skip to first unread message

かいせい

unread,
Feb 21, 2024, 8:48:28 AMFeb 21
to 日本Androidの会
以下のソースでインストールされたアプリを検知を実装しました。
Android12,13,14はレシーバーが動作したものの、11以下が動作せず、原因がわかる方いらっしゃいますでしょうか。
・BootCompletedはAndroid10でも検知できた
PACKAGE_CHANGEDのドキュメントを見ましたが、API Levelの制限も問題はなさそう

マニフェスト
<receiver
android:name=".boot.AppInstallReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<data android:scheme="package" />
</intent-filter>
</receiver>

レシーバー側
override fun onReceive(context: Context?, intent: Intent) {
val action = intent.action

if (action != null) {
  val packageName = intent.data!!.encodedSchemeSpecificPart
  if (Intent.ACTION_PACKAGE_CHANGED == action) {
    // パッケージが変更された場合の処理
    Log.d("PackageChanged", "Package changed: $packageName")
  }
}

かいせい

unread,
Feb 21, 2024, 8:48:28 AMFeb 21
to 日本Androidの会
Android11以下でアプリのインストールを検知できない
アプリのインストールを検知し、処理を実行させたいです。
以下のソースでAndroid12以降は検知できたものの、Android11以下が動作しませんでした。原因わかる方いらっしゃいますでしょうか。
・BootCompletedは全てのOSで動作した
・minsdkは29、targetは34
マニフェスト
<receiver
android:name=".boot.AppInstallReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<data android:scheme="package" />
</intent-filter>
</receiver>

レシーバー
override fun onReceive(context: Context?, intent: Intent) {
  val action = intent.action
  if (action != null) {
    val packageName = intent.data!!.encodedSchemeSpecificPart
    Log.d("PackageChanged""Package replaces: $packageName")
  }
}

Monxarat

unread,
Feb 21, 2024, 9:11:35 AMFeb 21
to android-g...@googlegroups.com

Android 11 以下では、アプリインストール検知に必要なパーミッションがデフォルで無効になっています。

以下のパーミッションを有効にする必要があります。

  1. android.permission.INSTALL_PACKAGES
  2. android.permission.REQUEST_INSTALL_PACKAGES

AndroidManifest.xml


<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
....
<receiver android:name=".boot.AppInstallReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <action android:name="android.intent.action.PACKAGE_REPLACED" />


        <data android:scheme="package" />
    </intent-filter>
</receiver>

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
    if (ContextCompat.checkSelfPermission(context, Manifest.permission.INSTALL_PACKAGES) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.INSTALL_PACKAGES}, REQUEST_CODE_INSTALL_PACKAGES);
    }
}


よろしくお願いいたしす。



2024年2月21日(水) 22:48 かいせい <wtnb...@gmail.com>:
--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/android-group-japan/036d3d8d-0c63-4c8f-86db-3f0580bb9988n%40googlegroups.com にアクセスしてください。

かいせい

unread,
Feb 25, 2024, 8:16:16 AMFeb 25
to android-g...@googlegroups.com
ありがとうございます。
理解し、解決することができました。

2024年2月21日(水) 23:11 Monxarat <nguyenquo...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/android-group-japan/CAHPW1oFCadOk8Hs1atJrROpuLxP57L-LFBN8qmRp0Mxz-YfXjw%40mail.gmail.com にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages