2015-02-20 2 views
0

****** Теперь вы завершили код, но дисплей уведомления снова запущен после отмены!DownloadManager, никогда не заканчивающееся уведомление

Я использую DownloadManager для загрузки файла по URL-адресу, он отлично работает. код создает менеджер:

String[] url = {urlsProz,urlsMb}; 
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url[i])); 
downloadFile=url[i]; 
request.setDescription("Some description"); 
request.setTitle("Some titles"); 
// in order for this if to run, you must use the android 3.2 to compile your app 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    request.allowScanningByMediaScanner(); 
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE); 
} 
String s= Environment.DIRECTORY_DOWNLOADS; 
Log.i("*** testDownloadManager***",s+"/"+url[i]); 
request.setDestinationInExternalPublicDir(s, "name-of-the-file"+(++j)+".ext"); 

// get download service and enqueue file 
manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
//Download progress will be showing in the notification bar 
downloadId=manager.enqueue(request); 
Log.i("*** testDownloadManager***","downloadId:"+downloadId); 

Мой код после нажатия кнопки отмены-:

if (manager != null) { 
    //remove() method will return the number of downloads removed 
    //Any downloaded files (complete or partial) will be deleted 
    int i = manager.remove(downloadId); 
    Log.i(TAG, downloadId + "," + i + " cancelled"); 
    NotificationManager notifManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); 
    //notifManager.cancelAll(); //doesn'nt work 
    manager = null; 
} 

Менеджер отменяется, но дисплей уведомление по-прежнему работает, даже после того, как приложение. Любые идеи как отменить это уведомление?

метод Привет Wicki

+0

Попробуйте отменить его, используя свой ID: 'notifManager.cancel (notificationID);'. И убедитесь, что у вас есть поле 'notifManager' внутри вашего класса вместо локальной переменной. –

ответ

0

cancelAll() только отменить уведомления, созданного приложением.

Я думаю, что вы используете DownloadManager как это:

// start download 
Request request = new Request(Uri.parse(urltoDownload)); 
request.setNotificationVisibility(Request.VISIBILITY_VISIBLE); 
request.setTitle("my title"); 
long enqueue = downloadManager.enqueue(request); 

Так что DownloadManager приложение (услуги), которые создают уведомления, и это только DownloadManager приложение может отменить его. Вы не можете отменить уведомления других приложений, это невозможно.

+0

@Gagan см. Мой модифицированный код! – user3589211

0
DownloadManager dm = (DownloadManager) c 
      .getSystemService(Context.DOWNLOAD_SERVICE); 
    DownloadManager.Request dlrequest = new DownloadManager.Request(
      Uri.parse(url)); 
    dlrequest 
      .setAllowedNetworkTypes(
        DownloadManager.Request.NETWORK_WIFI 
          | DownloadManager.Request.NETWORK_MOBILE) 
      .setTitle("Downloading") 
      .setDescription("Downloading in Progress..") 
      .setDestinationInExternalPublicDir("folder_name", name + ".jpg") 
      **.setNotificationVisibility(visibility)** 
      .allowScanningByMediaScanner(); 

    dm.enqueue(dlrequest); 

.setNotificationVisibility (видимость) -> набор видимости true или false. и его сделано ..!