gpt4 book ai didi

android - 如果文件已经下载,DownloadManager 不会下载文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:37 24 4
gpt4 key购买 nike

我正在使用 DownloadManager 下载我的应用程序文件。如果我第二次将 url 放入 DownloadManager,它会下载文件并在末尾放置 -1 filename-1.file。有没有办法让 DownloadManager 再次下载它?还是我必须自己检查?

代码:

private void downloadImages(final List<SomeClass> data) {
RuntimeExceptionDao<SomeClass, Integer> someDao = DatabaseAdapter.getInstance().getSomeDao();
DownloadManager downloadmanager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);
for(SomeClass someClass : data){
DownloadManager.Request request = getRequest(someClass);
someClass.mDownloadId = downloadmanager.enqueue(request);
someDao.createOrUpdate(someClass);
}
}

private DownloadManager.Request getRequest(SomeClass someClass) {
Uri uri = Uri.parse(someClass.mImage);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
request.setVisibleInDownloadsUi(false);
request.setDestinationInExternalFilesDir(mContext, Environment.DIRECTORY_DOWNLOADS, car.getFileName());
return request;
}

最佳答案

我就是这样解决的,你必须向下载管理器查询并验证是否已经有同名的下载。如果没有任何巧合,那么我会创建一个文件并使用存在函数来验证它是否已经在下载目录中。如果不存在,我将开始下载。

downloadManager = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);

gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

//Crear objeto file con la ruta
File ExistingFile = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS) + "/" + Archivos.get(position).getNombre());

//Checar el downloadManager
Cursor cursor = downloadManager.query( new Query() );
boolean IsInDownloadManager;

IsInDownloadManager = false;
for (int i = 0; i < cursor.getCount() ; i++)
{
cursor.moveToPosition(i);
Log.i("Click Grid", "Objetos en download manager [" + String.valueOf(i) + "] " + cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_TITLE)));
if (Archivos.get(position).getNombre().equals(cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_TITLE)))){
IsInDownloadManager = true;
Log.i("Click Grid", "Objeto está en download Manager " + Archivos.get(position).getNombre());
break;
}
}

if (IsInDownloadManager){
//cursor esta aputando a la fila donde se quedó en el ciclo for
int Status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
Log.i("Click Grid", cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)));

if (Status == DownloadManager.STATUS_SUCCESSFUL){
Toast.makeText(getActivity() ,"Abriendo " + Archivos.get(position).getNombre(), Toast.LENGTH_SHORT).show();
try { openFile(getActivity(),ExistingFile ); } catch (IOException e) {e.printStackTrace();}
}else{
Toast.makeText(getActivity() ,Archivos.get(position).getNombre() + " ya se está descargando", Toast.LENGTH_SHORT).show();
}

}else{

if( ExistingFile.exists() ){
Toast.makeText(getActivity() ,"Abriendo " + Archivos.get(position).getNombre(), Toast.LENGTH_SHORT).show();
try { openFile(getActivity(),ExistingFile ); } catch (IOException e) {e.printStackTrace();}
}else{
DescargarArchivo( Archivos.get(position) );
}
}

}});

关于android - 如果文件已经下载,DownloadManager 不会下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23012013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com