2017-03-03 3 views
0

Wie kann ich überprüfen wther die Datei herunterlädt oder ich habe nicht diesen Code: -Android Download Manager Abfrage ist das Herunterladen

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(uri)); 
      request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
      refrence = downloadManager.enqueue(request); 

Ich brauche den Download-Manager von der „refrence“ abfragen?

+0

Ein besserer Weg, dies zu tun ist, Fortschrittsbalken zusammen mit dem Herunterladen der Datei anzuzeigen. Um dies zu erreichen, können Sie die Dateigröße ermitteln und dann mithilfe der Formel den Prozentsatz der heruntergeladenen Datei berechnen. Folgen Sie diesem Link: http://www.androidhive.info/2012/04/android-downloading-file-by-showing-progress-bar/ Ich hoffe, Sie finden die Lösung für Ihre Frage – BhanuSingh

+0

Ich brauche nicht anzuzeigen Fortschrittsbalken, sollte dies ein Hintergrund herunterladen, aber für zeitaufwändig ich nur den Download-Manager verwenden, um einen Service zu machen alles was ich brauche ist zu überprüfen, ob die Datei heruntergeladen wird oder nicht, so kann der Benutzer nicht auf Download während der Datei klicken Download oder Download abgeschlossen –

+0

OK, in diesem Fall können Sie einfach die Logik, wie sie die Fertigstellung der Datei herunterladen berechnen, lassen Sie mich das für Sie tun. – BhanuSingh

Antwort

1

Verwenden query() über die Downloads zu erkundigen. Wenn Sie enqueue() aufrufen, ist der Rückgabewert eine ID für den Download. Sie können auch nach Status abfragen:

Cursor c = downloadManager.query(new DownloadManager.Query() 
     .setFilterByStatus(DownloadManager.STATUS_PAUSED 
       | DownloadManager.STATUS_PENDING 
       | DownloadManager.STATUS_RUNNING)); 
To be notified when a download is finished, register a BroadcastReceiver for ACTION_DOWNLOAD_COMPLETE: 

BroadcastReceiver onComplete = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // do something 
    } 
}; 

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

Beachten Sie, dass Sie auch für die ACTION_NOTIFICATION_CLICKED hören sollte ausgestrahlt wissen, wann ein Benutzer die Benachrichtigung für einen laufenden Download geklickt hat.

+0

können Sie ein komplettes Beispiel machen, also kann dies eine vollständige Antwort sein? –

-1

Versuchen Sie dieses Stück Code:

protected String doInBackground(String... f_url) { 
      int count; 
      try { 
       URL url = new URL(f_url[0]); 
       URLConnection conection = url.openConnection(); 
       conection.connect(); 
       // getting file length 
       int lenghtOfFile = conection.getContentLength(); 

       // input stream to read file - with 8k buffer 
       InputStream input = new BufferedInputStream(url.openStream(), 8192); 

       // Output stream to write file 
       OutputStream output = new FileOutputStream("/sdcard/downloadedfile.jpg"); 

       byte data[] = new byte[1024]; 

       long total = 0; 

       while ((count = input.read(data)) != -1) { 
        total += count; 

        // writing data to file 
        output.write(data, 0, count); 
       } 
       //here you can use a flag to notify the 
       //completion of download. 
       // flushing output 
       output.flush(); 

       // closing streams 
       output.close(); 
       input.close(); 
     } catch (Exception e) { 
      Log.e("Error: ", e.getMessage()); 
     } 

     return null; 
    } 
+0

Ich muss den Download-Manager verwenden, es ist zuverlässiger. –

Verwandte Themen