android - 即使下载不成功(空间不足时)也获取 "DownloadManager.STATUS_SUCCESSFUL"

标签 android broadcastreceiver android-download-manager download-manager

我总是得到 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);
            }                
            }
        }
    }

最佳答案

如果您的连接超时,您将收到 FAILED。 如果由于空间不足而失败,请检查查询列 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));

关于android - 即使下载不成功(空间不足时)也获取 "DownloadManager.STATUS_SUCCESSFUL",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54786374/

相关文章:

java - 如何解决ArrayList排序错误?

java - 如何在android中使用Clusterkraf?

android - 你如何自动发送文本?

java - 即使应用程序被杀死,我怎样才能让我的应用程序运行?当它从最近的应用程序中删除时,就被杀死了

java - DownloadManager 什么时候比 HttpUrlConnection 更好?

java - 无法在 API 23 及更低版本上下载 PDF 文件

java - 我的 Action Bar 的 SearchView 如何在 ListView 上工作?

android - InputType 对自定义 EditText 没有影响

java - 如何注销 fragment 中使用的Receiver?

android - 在android中以字节[]下载数据