J'utilise IntentService pour changer le fond d'écran en arrière-plan. Il est appelé à la réception d'une notification push. Le code ci-dessous fonctionne correctement si la notification est reçue lorsque l'application est ouverte. Mais ne fonctionne pas si l'application est fermée/tué (en glissant loin avec l'aide du bouton de menu)onHandleIntent - La connexion Internet ne fonctionne pas lorsque l'application est fermée
@Override
protected void onHandleIntent(Intent intent) {
//Toast.makeText(this, "Intent", Toast.LENGTH_SHORT).show();
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
String imageUrl = intent.getExtras().getString("imageUrl");
try {
URL url;
try {
WallpaperManager myWallpaperManager = WallpaperManager
.getInstance(this);
url = new URL(
imageUrl);
Bitmap bmp = BitmapFactory.decodeStream(url
.openConnection().getInputStream());
myWallpaperManager.setBitmap(bmp);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
PushReceiver.completeWakefulIntent(intent);
}
fonctionne très bien lorsque l'application est ouverte. Lorsque fermé/tué, il n'est pas en mesure de télécharger l'image à BitmapFactory.decodeStream(url.openConnection().getInputStream())
Ci-dessous est la trace de la pile.
J'utilise dispositif Mi3 Xiaomi (Je ne sais pas si cela aide)
App dispose des autorisations pour android.permission.INTERNET, android.permission.ACCESS_NETWORK_STATE
W/System.err: java.net.ConnectException: failed to connect to sgsbirds.com/182.50.149.129 (port 80): connect failed: ECONNREFUSED (Connection refused)
W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:114)
W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460)
W/System.err: at java.net.Socket.connect(Socket.java:833)
W/System.err: at com.android.okhttp.internal.Platform.connectSocket(Platform.java:152)
W/System.err: at com.android.okhttp.Connection.connect(Connection.java:101)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
W/System.err: at org.dycusa.sgs.wallpapers.IntentServiceManager.onHandleIntent(IntentServiceManager.java:111)
W/System.err: at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err: at android.os.Looper.loop(Looper.java:136)
W/System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
W/System.err: Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
W/System.err: at libcore.io.Posix.connect(Native Method)
W/System.err: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:112)
W/System.err: ... 16 more
Est-ce que cela se produit même si l'écran de l'appareil est déverrouillé? Il y a une option sur Android pour se déconnecter si l'appareil est verrouillé. –
Quel est votre paramètre actuel pour "Limiter les données d'arrière-plan" dans Paramètres système -> Utilisation des données? –
Oui, cela se produit même si l'affichage de l'appareil est déverrouillé. En fait, même le crashlytics n'a pas réussi à envoyer le journal en raison de 'java.net.ConnectException' –