Android DownloadManager不下载已下载的文件

Android DownloadManager不下载已下载的文件,android,download,overriding,download-manager,Android,Download,Overriding,Download Manager,我正在使用DownloadManager下载我的应用程序文件。 如果我第二次将url放入DownloadManager中,它将下载该文件,并在末尾放入一个-1filename-1.file。有没有办法不让DownloadManager再次下载它?还是我必须自己检查 代码: private void下载图像(最终列表数据){ RuntimeExceptionDao-someDao=DatabaseAdapter.getInstance().getSomeDao(); DownloadManager

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

代码:

private void下载图像(最终列表数据){
RuntimeExceptionDao-someDao=DatabaseAdapter.getInstance().getSomeDao();
DownloadManager DownloadManager=(DownloadManager)mContext.getSystemService(Context.DOWNLOAD\u服务);
for(SomeClass SomeClass:数据){
DownloadManager.Request=getRequest(someClass);
someClass.mDownloadId=downloadmanager.enqueue(请求);
createOrUpdate(someClass);
}
}
private DownloadManager.Request getRequest(SomeClass SomeClass){
Uri=Uri.parse(someClass.mImage);
DownloadManager.Request=新的DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.request.VISIBILITY\u隐藏);
request.setVisibleInDownloadsUi(false);
request.setdestinationnexternalfilesdir(mContext,Environment.DIRECTORY_下载,car.getFileName());
返回请求;
}

我就是这样解决的,您必须向下载管理器进行查询,并验证是否已经有具有相同标题的下载。如果没有任何巧合,那么我会创建一个文件,并使用exist函数验证它是否已经在下载目录中。如果没有,我就开始下载

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) );
                }
            }

        }});
downloadManager=(downloadManager)getActivity().getSystemService(Context.DOWNLOAD\u服务);
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
//在拉鲁塔的档案馆
File ExistingFile=新文件(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_下载)+“/”+Archivos.get(position.getNombre());
//Checar el下载管理器
Cursor=downloadManager.query(newquery());
布尔IsInDownloadManager;
IsInDownloadManager=false;
对于(int i=0;i
您的代码在哪里?您可以在每次下载文件之前检查该文件是否已下载。我添加了代码。有什么好办法可以走到这条路吗?它应该是Environment.DIRECTORY\u下载。它类似于/Files/Downloads/
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) );
                }
            }

        }});