Получение "DownloadManager.STATUS_SUCCESSFUL" даже после неудачной загрузки (если недостаточно места) - PullRequest
0 голосов
/ 20 февраля 2019

Я всегда получаю COLUMN_STATUS как STATUS_SUCCESSFUL, даже если происходит сбой из-за недостатка места:

    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent == null) {
            Utils.log(TAG, "Intent is NULL");
            return;
        }

        if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(intent.getAction())) {
            DownloadManager downloadManager = (DownloadManager)
                    context.getSystemService(Context.DOWNLOAD_SERVICE);
            long referenceId = intent.getLongExtra(
                    DownloadManager.EXTRA_DOWNLOAD_ID, -1L);

            if (downloadManager != null) {
                DownloadManager.Query dmQuery = new DownloadManager.Query();
                dmQuery.setFilterById(referenceId);
                try (Cursor cursor = downloadManager.query(dmQuery)) {
                    if (cursor != null && cursor.getCount() > 0) {
                        // The error is here
                        int columnIndex =cursor.getColumnIndex(DownloadManager.COLUMN_STATUS);
                        if (cursor.moveToFirst() && cursor.getInt(columnIndex) == DownloadManager.STATUS_SUCCESSFUL) {

                        } else {
                            Log.e(TAG, "fail");
                        }
                    }

            } catch (Exception exception) {
                Log.e(TAG, exception);
            }                
            }
        }
    }

1 Ответ

0 голосов
/ 20 февраля 2019

Если время вашего соединения истекло, вы получите НЕИСПРАВНОСТЬ.Если это не удается из-за недостатка места, проверьте столбцы запроса COLUMN_TOTAL_SIZE_BYTES и COLUMN_BYTES_DOWNLOADED_SO_FAR, чтобы проверить, равны ли они.

int bytes_total = cur.getInt(cur.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
int bytes_downloaded = cur.getInt(cur.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
...