1

DownloadManager를 사용하여 URL에서 XML 파일을 다운로드하고 있습니다. 문제가 없지만 두 가지 질문이 있습니다.안드로이드의 닫힌 NotificationBar에있는 DownloadManager의 메시지

1.) 폐쇄 알림 표시 줄에 다운로드에 대한 메시지를 표시하려면 어떻게합니까? 이 스냅 샷에 표시된 바와 같이 막대를 열면 메시지를 표시 할 수 있습니다. NotificationBar

2.) 프로그래밍 방식으로 알림을 제거하려면 어떻게해야합니까? DownloadManager에 대한

내 코드 : 다운로드가 완료되면

  //Download XML file from URL 
     DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URL)); 
     request.setTitle("Download von "+Name+".xml"); 
     request.setDescription("Download von "+Name+".xml"); 

     // 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_NOTIFY_COMPLETED); 
     } 

     request.setDestinationInExternalPublicDir(FileSeperator+"XML"+FileSeperator, Name + FileExtension); 

     // get download service and enqueue file 
     DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
     manager.enqueue(request); 

답변

-1
+0

내 코드를 다운로드 한 후 OnCreate() 메소드에서이 코드를 실행 해 봅니다. \t \t'NotificationManager notificationManager = (NotificationManager) getSystemService (NOTIFICATION_SERVICE); \t notificationManager.cancelAll(); '그러나 알림은 제거되지 않습니다 ... 알림은 DownloadManager에서 생성 되었기 때문에 발생합니까? –

+0

당신이 뭘 원합니까? 클릭하면 알림이 삭제됩니까? – Jin35

+0

자신의 알림을 제거하려면'cancel (id)'를 사용하십시오. 여기서'id'는'notify (id, notification)'에서 제공 한 숫자입니다. – Jin35

1

예, 당신이 알림을 표시 할 수 있습니다. 당신도 그것을 제거 할 수 있습니다. 이 게시물을 따르십시오 How can I programmatically open/close notifications in Android?

+0

그건 내가 찾는 것이 아니다. 알림을 삭제하고 싶습니다. 바를 확장 할 필요가 없습니다. –

+0

시도해주세요. http://stackoverflow.com/questions/8841078/clear-a-status-notification-android-rq=1 –

3

DownloadManager API은 다운로드 한 파일을 파일 시스템에서 삭제할 수있는 remove(long... ids) 방법을 제공합니다. remove()은 파일 시스템과 다운로드 관리자 앱의 다운로드 파일 목록에서 파일을 삭제합니다. 또한 시스템 알림 상자에서 진행 통지를 제거합니다. 요청을 대기열에 추가했을 때받은 ID 만 전달하면됩니다. 약간 놀라운 수 있습니다 무엇

도 거기 완료 통지 수 있으며, 다운로드가 성공적으로 완료되면, DownloadManager 당신이 당신의 다운로드 요청 remove()를 호출하는 경우에도, 가 완료 통지를 삭제하지 않습니다 수 있다는 것입니다 신분증.

사용자가 Download Manager 앱에서 파일을 삭제하더라도 시스템 알림 창에서 진행률 알림 만 제거되지만 완료 알림은 계속 유지됩니다. 사용자가 앱을 수동으로 제거했거나 프로그래밍 방식으로 다운로드를 제거한 경우 (remove()) 알림이 OS에 발생하여보고가 인 경우 "불행히도 프로세스 android.process.media가 중지되었습니다. . " 이것은 Android 버그 인 것 같습니다.

DownloadManager이 완료 알림을 소유하고 있으므로 NotificationManager API조차도 도움이되지 않습니다. 은 앱이 아니기 때문에 도움이되지 않습니다. 그래서 cancelAll()은 효과가 없습니다.

결론 : 당신이 완료 통지를하지 않으 경우, 값 VISIBILITY_VISIBLE_NOTIFY_COMPLETED와 귀하의 요청에 setNotificationVisibility()를 호출하지 않습니다. 기본 가시성은 VISIBILITY_VISIBLE이며 진행 알림 만 표시합니다. 앞서 설명한 것처럼 진행 알림은 자동으로 사라집니다.

알림을 완벽하게 제어하려면 VISIBILITY_HIDDEN (권한 : android.permission.DOWNLOAD_WITHOUT_NOTIFICATION 필요)을 사용하도록 요청을 설정할 수 있습니다. 그런 다음 NotificationManager API를 사용하여 일반적인 맞춤법 알림을 원하는대로 표시 할 수 있습니다.

내 응용 프로그램의 경우 jar 파일을 다운로드 한 다음 내용을 추출하고 jar 파일을 제거하면 VISIBILITY_VISIBLE (완료 알림 없음)으로 결정됩니다.

Request request = new Request(baseUrl + destinationFile)) 
      .setDescription("file description") 
      .setDestinationInExternalFilesDir(mContext, null, destinationFile) 
      .setNotificationVisibility(Request.VISIBILITY_VISIBLE) 
      .setVisibleInDownloadsUi(true) 
      .setTitle("My App Title"); 
0

당신은 브로드 캐스트 리시버의 onReceive 방법 진정한


downloadManager.addCompletedDownload (YOUR_TITLE, YOUR_DESCRIPTION, YOUR_MIMETYPE, downloadedFile.getPath(), downloadedFile에서 다음과 같은 기능을 사용할 수 있습니다 : 여기에 내가 요청을 만드는 방법 .getTotalSpace(), false); 이 같은


브로드 캐스트 리시버 :

registerReceiver (브로드 캐스트 리시버, 신규로 IntentFilter ("android.intent.action.DOWNLOAD_COMPLETE"));


마지막 매개 변수를 "true"로 설정하면 다운로드가 완료되면 알림이 표시됩니다. "false"로 설정하면 다운로드하는 동안 알림 만 표시되며 다운로드가 완료되고 알림이 자동으로 취소 된 경우 게시물에 프로그래밍 방식으로 알림 표시 줄을 확장하는 코드 만 있습니다.