2017-09-11 2 views
0

Je vais faire un service qui fonctionne après le démarrage de l'appareil terminé. J'ajouté android.permission.RECEIVE_BOOT_COMPLETED permission et un récepteur comme celui-ci:Comment réparer BroadcastReceiver.onReceive ne pas recevoir d'action BOOT_COMPLETED?

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

Enfin, je crée une classe BootReceiver va de BroadcastReceiver comme ceci:

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

Mais il ne fonctionne pas. Lorsque je redémarre mon téléphone, je vois une exception à logcat comme ceci:

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) 

Lorsque je désinstalle mon application, cette exception semble encore.

Quel est le problème? Comment puis-je le réparer? Merci d'avance.

Répondre

0

Il a été résolu.

Installez l'application en mémoire privée, puis cela fonctionne très bien. Bien sûr, lorsque vous installez une application, je sais qu'elle s'installe sur la mémoire privée en standard.

Mais quand vous voulez obtenir des récepteurs système, vous devez le coder.