2

i am unable to use GetPackageManager in my BroadcastReceiver, i am getting the error "The method getPackageManager() is undefined for the type ReceiverSchedulerDaily". below is my code

public class ReceiverSchedulerDaily extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        // clean all app caches
        PackageManager pm = getPackageManager();
        Method[] methods = pm.getClass().getDeclaredMethods();
        for (Method m : methods) {
            if (m.getName().equals("freeStorageAndNotify")) {
                try {
                    long desiredFreeStorage = Long.MAX_VALUE;
                    m.invoke(pm, desiredFreeStorage, null);
                } catch (Exception e) {
                }
                break;
            }
        }
        //
    }

}
MaggotSauceYumYum
  • 402
  • 1
  • 5
  • 23

1 Answers1

2

Instead of the line:

PackageManager pm = getPackageManager();

Use this:

PackageManager pm = context.getPackageManager();

The code you are using was probably used in an Activity before, which is a subclass of Context. But you are using it in a BroadCastReceiver now, which does not extend Context. So you have to use a Context reference instead, to get the reference to the Package Manager system service.

Daniel Zolnai
  • 16,487
  • 7
  • 59
  • 71