STATUS_PAUSED 不会在 DownloadManager 中调用 onReceive()

STATUS_PAUSED won't call onReceive() in DownloadManager

我使用 DownloadManager 从服务器下载文件,我预计当网络未连接到互联网时我会在 BroadcastReceiver 中收到 STATUS_PAUSED。但它不会调用 onReceive().

downloadReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
       // ...
    }
}

registerReceiver(downloadReceiver,
    new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

您正在过滤 ACTION_DOWNLOAD_COMPLETE 操作,您的接收器将不会收到任何其他广播。

而且STATUS_PAUSED不是广播

它是由 DownloadManager 管理的特定下载的状态,您可以查询。

例如:

DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Query query = new DownloadManager.Query();

query.setFilterById(idsToQuery);
query.setFilterByStatus(DownloadManager.STATUS_PAUSED);

Cursor cursor = dm.query(query);

if (cursor.moveToFirst()) {
    // do whatever you would like with the result
}

Download Manager class而言,它不Broadcast任何关于下载内容状态的状态。只广播两个状态

  1. ACTION_DOWNLOAD_COMPLETE

  2. ACTION_NOTIFICATION_CLICKED