如何修复 BroadcastReceiver.onReceive 未收到 BOOT_COMPLETED 操作?

How to fix BroadcastReceiver.onReceive not receive BOOT_COMPLETED action?

我将在设备启动完成后 运行 提供一项服务。 所以我添加了 android.permission.RECEIVE_BOOT_COMPLETED 权限和这样的接收者:

<receiver android:name=".myapp.BootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

最后,我创建了一个从 BroadcastReceiver 扩展的 BootReceiver class,如下所示:

public class BootReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e("RECEIVER", "BOOT RECEIVED:" + intent.getAction());
    }
}

但它不起作用。当我重新启动我的 phone 时,我看到 logcat 的异常如下:

E/BootReceiver: Can't remove old update packages
    java.lang.IllegalArgumentException: Unknown URL content://downloads/my_downloads
at android.content.ContentResolver.delete(ContentResolver.java:1329)
at android.provider.Downloads.removeAllDownloadsByPackage(Downloads.java:1089)
at com.android.server.BootReceiver.removeOldUpdatePackages(BootReceiver.java:93)
at com.android.server.BootReceiver.access0(BootReceiver.java:42)
at com.android.server.BootReceiver.run(BootReceiver.java:82)

当我卸载我的应用程序时,仍然出现此异常。

有什么问题吗?我该如何解决? 提前致谢。

解决了。

将应用程序安装到私有内存中,然后它就可以正常工作了。 当然,当安装应用程序时,我知道它安装在标准的私有内存中。

但是当你想要获得一些系统接收器时,你需要对其进行编码。