我无法在我的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系统服务的引用。