7

Je reçois un avertissement de déclaration obsolète de récepteur de diffusion.CONNECTIVITY_CHANGE déprécié dans la cible d'Android N

<!-- NETWORK RECEIVER... --> 
<receiver android:name=".utils.NetworkUtils" > 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

AVERTISSEMENT:

Déclaration d'une BroadcastReceiver pour android.net.conn.CONNECTIVITY_CHANGE est obsolète pour des applications de ciblage N et supérieur. En général, les applications ne doivent pas s'appuyer sur cette diffusion et utiliser à la place JobScheduler ou GCMNetworkManager.

Existe-t-il un autre moyen de l'utiliser sans méthodes obsolètes?

Répondre

1

L'avis officiel de Google est de passer à JobScheduler. Puisque celui-ci n'est disponible qu'à partir du niveau d'API 21 et supérieur, il s'agit d'une interdiction pour les appareils plus anciens.

Heureusement, les gens de Evernote créer une version de compatibilité descendante de ce: https://github.com/evernote/android-job

0

L'avertissement semble contenir l'indice que vous devez utiliser le planificateur de tâches. L'intention ici est que les applications ne communiquent pas les intentions au système concernant les actions qu'ils veulent faire quand l'application reçoit la connectivité. Le planificateur de tâches évite évidemment ces problèmes et cela permet à Android de regrouper les demandes, de les reporter, etc. L'inconvénient est que vous devrez mettre en œuvre faire le travail dans les deux sens puisque le planificateur de travail n'est disponible que depuis Android 5.0. Peut-être que vous pouvez utiliser les bibliothèques qui vont passer à l'implémentation native du planificateur de travail, another answer listé l'un d'eux.

7

J'ai eu le même problème, j'ai fait quelque chose comme ça. Cela a fonctionné pour moi, j'espère que ça aide. N'ajoutez pas le récepteur dans le manifeste de sorte qu'il ne vit que dans cette activité.

+2

Merci. 'final static String CONNECTIVITY_ACTION' existe déjà dans la classe' android.net.ConnectivityManager'. Dans 'onCreate()', vous ne pouvez pas écrire 'if (checkForInternet()) {loadData(); ... ', car il sera appelé de BroadcastReceiver instantanément. – CoolMind

+0

Merci pour la contribution. –

+0

cela fonctionnera-t-il quand l'application est fermée de force? – Priya