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