onHandleIntent - подключение к Интернету не работает, когда приложение закрыто

Я использую IntentService для смены обоев в фоновом режиме. Он вызывается при получении push-уведомления. Код ниже работает нормально, если уведомление получено, когда приложение открыто. Но не работает, если приложение закрыто/убито (смахнув его с помощью кнопки меню)

@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);
}

Работает нормально, когда приложение открыто. Когда он закрыт/убит, он не может загрузить образ по адресу BitmapFactory.decodeStream(url.openConnection().getInputStream()).

Ниже приведена трассировка стека.

Я использую устройство Mi3 Xiaomi (не уверен, что это поможет)

Приложение имеет разрешения для 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

person Venkat Kotra    schedule 19.01.2016    source источник
comment
Это происходит, даже если дисплей устройства разблокирован? На Android есть возможность отключиться, если устройство заблокировано.   -  person Juliano Nunes Silva Oliveira    schedule 19.01.2016
comment
Какова ваша текущая настройка для ограничения фоновых данных в Системных настройках -> Использование данных?   -  person Mateusz Herych    schedule 19.01.2016
comment
Да, это происходит, даже если дисплей устройства разблокирован. На самом деле даже crashlytics не смог отправить журнал из-за java.net.ConnectException   -  person Venkat Kotra    schedule 19.01.2016
comment
@MateuszHerych Я не могу найти этот параметр Ограничить фоновые данные. Однако я вижу настройку, позволяющую приложениям использовать данные через Wi-Fi и данные.   -  person Venkat Kotra    schedule 19.01.2016
comment
@MateuszHerych. Давай. Я нашел настройку Ограничить фоновые данные, и она была отключена. Позвольте мне проверить это сейчас. Спасибо большое.   -  person Venkat Kotra    schedule 19.01.2016


Ответы (1)


Параметр «Ограничить фоновые данные» для приложения был отключен. Я включил его, и все начало работать.

@MateuszHerych был на высоте.

person Venkat Kotra    schedule 19.01.2016
comment
Рад помочь! Наслаждаться. - person Mateusz Herych; 19.01.2016