1
我有这个应用程序,其中的一个功能将允许您下载视频。下载部分正在工作,但是我需要在下载完成后立即执行另一项功能。目前,我使用AsyncTask,但每当我尝试在PostExecute上敬酒时,都不会发生任何事情。我想调用另一个函数来加密,然后在下载完成后删除原始文件。下载管理器Android:下载完成
顺便说一句,加密部分也在工作。我唯一需要的是能够让我知道下载是否已经完成的事情。
这是我将从URL下载文件的代码。但是,我需要知道,如果下载完成,执行的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();
}
中的AsyncTask的代码是:
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();
}
}
我不知道是什么问题,但哟脐带绕颈尝试使用getApplicationContext(取而代之的是getActivity) –
还有就是代码没有问题。我只需要知道如何知道下载是否完成。 – VouchMe