Ich habe diese Anwendung, in der eine Funktion ermöglicht es Ihnen, ein Video herunterzuladen. Der Download-Teil funktioniert, aber ich muss direkt nach dem Download eine andere Funktion ausführen. Derzeit verwende ich AsyncTask, aber wenn ich versuche, auf PostExecute zu rösten, passiert nichts. Ich möchte eine andere Funktion aufrufen, um die ursprüngliche Datei zu verschlüsseln und dann zu löschen, nachdem der Download abgeschlossen wurde.Download Manager Android: Download Complete
Und übrigens, der Verschlüsselungsteil funktioniert auch. Das einzige, was ich brauche, ist etwas, mit dem ich wissen kann, ob der Download abgeschlossen ist.
Dies ist der Code, in dem ich die Datei von einer URL herunterladen werde. Aber ich muss wissen, ob der Download abgeschlossen ist die AsyncTask
public void downloadTutorial() throws Exception {
myURL = "";
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(myURL));
request.setTitle(injuryType + " Video");
request.setDescription("File is being downloaded...");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
String fileName = URLUtil.guessFileName(myURL, null, MimeTypeMap.getFileExtensionFromUrl(myURL));
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
DownloadManager manager = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
//if the download is complete execute this
//new JSONTask().execute();
}
Der Code des AsyncTask auszuführen ist:
public class JSONTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
try {
Encrypter.encrypt(injuryType);
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Toast.makeText(getActivity(), "Download Done", Toast.LENGTH_SHORT).show();
}
}
ich weiß nicht, was das Problem ist aber yo ucan try Verwendung getApplicationContext (statt dem getActivity) –
Es gibt kein Problem mit dem Code. Ich muss nur wissen, wie man weiß, ob der Download abgeschlossen ist. – VouchMe