我无法在我的BroadcastReceiver中使用GetPackageManager,出现错误“对于ReceiverSchedulerDaily类型,未定义方法getPackageManager()”。下面是我的代码

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;
            }
        }
        //
    }

}

最佳答案

代替该行:

PackageManager pm = getPackageManager();


用这个:

PackageManager pm = context.getPackageManager();


您使用的代码以前可能是在Activity中使用的,它是Context的子类。但是,您现在正在BroadCastReceiver中使用它,它不会扩展Context。因此,您必须使用上下文引用来获取对Package Manager系统服务的引用。

10-08 19:02