I have created the broadcast receiver file and also added it in the manifest still not getting any log while deleting or installing the app
AppChangesReceiver.kt
class AppChangesReceiver : BroadcastReceiver() {
companion object {
private const val TAG = "PackageChangeReceiver"
}
override fun onReceive(context: Context, intent: Intent) {
Log.d(TAG,"Received Broadcast")
val action = intent.action
action?.let {
when (it) {
Intent.ACTION_PACKAGE_REMOVED -> {
val removedPackage = intent.data?.encodedSchemeSpecificPart
Log.d(TAG, "Package removed: $removedPackage")
Toast.makeText(context, "Package removed: $removedPackage", Toast.LENGTH_LONG).show()
}
}
}
}
}
Manifest.xml
<receiver android:name=".AppChangesReceiver"
android:exported="true"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<data android:scheme="package" />
</intent-filter>
</receiver>
I am expecting to catch the events where apps are deleted or installed from the application
1
As it was mentioned in the comments, you need to register this receiver. You wont need the manifest section, so remove it. The code below shows you how you can register receiver. You may want to register it in a service or an activity.
val receiver = AppChangesReceiver()
IntentFilter().apply {
addDataScheme("package")
addAction(Intent.ACTION_PACKAGE_ADDED)
addAction(Intent.ACTION_PACKAGE_REPLACED)
}.also {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
context.registerReceiver(receiver, it, RECEIVER_NOT_EXPORTED)
} else {
context.registerReceiver(receiver, it)
}
}