【问题标题】:How to get the Download Manager ,download cancel callback? or else how to hide or remove this cancel from notification?如何获取下载管理器,下载取消回调?或者如何从通知中隐藏或删除此取消?
【发布时间】:2017-11-22 12:51:46
【问题描述】:

当视频正在下载时,有一个取消选项来取消下载。但是当我取消下载时,我没有从 DownloadManager 得到任何回调来更新应用程序 UI。

此取消选项仅在 Android 7 中可用。

否则是否有任何选项可以从那里隐藏或删除取消选项。

【问题讨论】:

  • 你找到解决办法了吗?我有同样的问题

标签: android android-notifications android-download-manager


【解决方案1】:

DownloadManager.ACTION_DOWNLOAD_COMPLETE注册广播接收器后,您可以在DownloadManager广播的onReceive()方法中检查DownloadManager状态,如下所示-

private BroadcastReceiver downloadReceiver = new BroadcastReceiver() {

  @Override
  public void onReceive(Context arg0, Intent arg1) {
   // TODO Auto-generated method stub
   checkDownloadStatus();
  } 
 };

private void checkDownloadStatus(){

  // TODO Auto-generated method stub
  DownloadManager.Query query = new DownloadManager.Query();
  long id = preferenceManager.getLong(strPref_Download_ID, 0);
  query.setFilterById(id);
  Cursor cursor = downloadManager.query(query);
  if(cursor.moveToFirst()){
   int columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS);
   int status = cursor.getInt(columnIndex);
   int columnReason = cursor.getColumnIndex(DownloadManager.COLUMN_REASON);
   int reason = cursor.getInt(columnReason);

   switch(status){
   case DownloadManager.STATUS_FAILED:
    String failedReason = "";
    switch(reason){
    case DownloadManager.ERROR_CANNOT_RESUME:
     failedReason = "ERROR_CANNOT_RESUME";
     break;
    case DownloadManager.ERROR_DEVICE_NOT_FOUND:
     failedReason = "ERROR_DEVICE_NOT_FOUND";
     break;
    case DownloadManager.ERROR_FILE_ALREADY_EXISTS:
     failedReason = "ERROR_FILE_ALREADY_EXISTS";
     break;
    case DownloadManager.ERROR_FILE_ERROR:
     failedReason = "ERROR_FILE_ERROR";
     break;
    case DownloadManager.ERROR_HTTP_DATA_ERROR:
     failedReason = "ERROR_HTTP_DATA_ERROR";
     break;
    case DownloadManager.ERROR_INSUFFICIENT_SPACE:
     failedReason = "ERROR_INSUFFICIENT_SPACE";
     break;
    case DownloadManager.ERROR_TOO_MANY_REDIRECTS:
     failedReason = "ERROR_TOO_MANY_REDIRECTS";
     break;
    case DownloadManager.ERROR_UNHANDLED_HTTP_CODE:
     failedReason = "ERROR_UNHANDLED_HTTP_CODE";
     break;
    case DownloadManager.ERROR_UNKNOWN:
     failedReason = "ERROR_UNKNOWN";
     break;
    }

    Toast.makeText(AndroidDownloadManagerActivity.this, 
      "FAILED: " + failedReason, 
      Toast.LENGTH_LONG).show();
    break;
   case DownloadManager.STATUS_PAUSED:
    String pausedReason = "";

    switch(reason){
    case DownloadManager.PAUSED_QUEUED_FOR_WIFI:
     pausedReason = "PAUSED_QUEUED_FOR_WIFI";
     break;
    case DownloadManager.PAUSED_UNKNOWN:
     pausedReason = "PAUSED_UNKNOWN";
     break;
    case DownloadManager.PAUSED_WAITING_FOR_NETWORK:
     pausedReason = "PAUSED_WAITING_FOR_NETWORK";
     break;
    case DownloadManager.PAUSED_WAITING_TO_RETRY:
     pausedReason = "PAUSED_WAITING_TO_RETRY";
     break;
    }

    Toast.makeText(AndroidDownloadManagerActivity.this, 
      "PAUSED: " + pausedReason, 
      Toast.LENGTH_LONG).show();
    break;
   case DownloadManager.STATUS_PENDING:
    Toast.makeText(AndroidDownloadManagerActivity.this, 
      "PENDING", 
      Toast.LENGTH_LONG).show();
    break;
   case DownloadManager.STATUS_RUNNING:
    Toast.makeText(AndroidDownloadManagerActivity.this, 
      "RUNNING", 
      Toast.LENGTH_LONG).show();
    break;
   case DownloadManager.STATUS_SUCCESSFUL:

    Toast.makeText(AndroidDownloadManagerActivity.this, 
      "SUCCESSFUL", 
      Toast.LENGTH_LONG).show();
    downloadManager.remove(id);
    break;
   } 
  } 
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2014-01-23
    • 2021-12-08
    • 2016-04-17
    • 2017-06-16
    • 1970-01-01
    相关资源
    最近更新 更多