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

时间:2017-09-11 15:40:50

标签: android broadcastreceiver

我要创建一个在设备启动完成后运行的服务。 所以我添加了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类,如下所示:

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

但它不起作用。当我重新启动手机时,我看到了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.access$100(BootReceiver.java:42)
at com.android.server.BootReceiver$1.run(BootReceiver.java:82)

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

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

2 个答案:

答案 0 :(得分:1)

请检查以下链接 enter link description here

答案 1 :(得分:0)

它解决了。

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

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