I am trying to detect when a new App is being installed but only if my app is running. I managed to detect the installation of the app by making a BroadcastReceiver and activating it inside the AndroidManifest file but this will detect even if my app is closed. So that is why I need to manually activate and deactivate the broadcastreveiver. To do this I have this code:
br = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.i("Enter", "Enters here"); Toast.makeText(context, "App Installed!!!!.", Toast.LENGTH_LONG).show(); } }; IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL); registerReceiver(br, intentFilter);
This should make a toast when a new app is installed. But sadly it does not. It does not enter in the onReceive method. Any help is appreciated.
I tried to register the BroadcastReceiver
in either manifest file or java code. But both of these two methods failed to trigger the onReceive()
method. After googling this problem, I found a solution for both methods from another Thread in SO: Android Notification App
In the manifest file (this approach no longer applies since API 26 (Android 8), it was causing performance issues on earlier Android versions):
<receiver android:name=".YourReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_INSTALL" /> <action android:name="android.intent.action.PACKAGE_ADDED" /> <data android:scheme="package"/> </intent-filter> </receiver>
In java code:
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL); intentFilter.addDataScheme("package"); registerReceiver(br, intentFilter);
This should work for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With