2016-01-19 4 views
0

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 
+0

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é. –

+0

Quel est votre paramètre actuel pour "Limiter les données d'arrière-plan" dans Paramètres système -> Utilisation des données? –

+0

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' –

Répondre

0

"Limiter les données d'arrière-plan" pour la mise en l'application était éteinte. Je l'ai allumé et tout a commencé à fonctionner.

@MateuszHerych était sur.

+0

Content de vous aider! Prendre plaisir. –