Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何接收下载管理器意图的状态,直到下载成功或失败大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的问题.
我正试图通过Asynctask使用下载管理器意图从我的服务器下载文件.
在asinctask类的doInBACkground中,我调用了下载管理器intent,doinBACkground将在下载完成时返回布尔值(成功或失败).
这是我的代码
protected Boolean doInBACkground(String... f_url) {
                Boolean flag = true;
                Boolean downloading =true;
                try{
                    DownloadManager mManager = (DownloadManager) getSystemservice(Context.DOWNLOAD_serviCE);            
                                   request mRqrequest = new request(
                                           Uri.parse("http://"+model.getDownloadURL()));
                                   long idDownLoad=mManager.enqueue(mRqrequest);
                                   DownloadManager.Query query = null;
                                   query = new DownloadManager.Query();
                                   cursor c = null;
                                     if(query!=null) {
                                                query.setFilterByStatus(DownloadManager.STATUS_Failed|DownloadManager.STATUS_PAUSED|DownloadManager.STATUS_succesSFUL|
                                                        DownloadManager.STATUS_RUNNING|DownloadManager.STATUS_PENDING);                                         
                                     } else {
                                return flag;
                                    }
                                     c = mManager.query(query);
                                        if(c.moveToFirst()) { 
                    int status =c.geTint(c.getcolumnIndex(DownloadManager.columN_STATUS)); 


                                       while (downloading)
                                       {    Log.i ("FLAG","Downloading");
                                           if (status==DownloadManager.STATUS_succesSFUL)
                                           {    Log.i ("FLAG","done");
                                               downloading = false;
                                               flag=true;
                                               break;      
                                           }
                                           if (status==DownloadManager.STATUS_Failed)
                                           {Log.i ("FLAG","Fail");
                                               downloading = false;
                                               flag=false;
                                              break;
                                           }
                               c.moveToFirst();
                                       }
                }
                                    return flag;
                }
                catch (Exception E)
                {
                     flag = false;
                        return flag;
                }    
            }

但DownloadManager状态永远不会跳转到DownloadManager.STATUS_succesSFUL或DownloadManager.STATUS_Failed.
我有什么帮助吗?

@H_944_11@解决方法
您必须重新查询下载管理器.即使数据发生变化,光标也保持不变.试试这样:
protected Boolean doInBACkground(String... f_url) {
    Boolean flag = true;
    Boolean downloading =true;
    try{
        DownloadManager mManager = (DownloadManager) getSystemservice(Context.DOWNLOAD_serviCE);            
        request mRqrequest = new request(
        Uri.parse("http://"+model.getDownloadURL()));
        long idDownLoad=mManager.enqueue(mRqrequest);
        DownloadManager.Query query = null;
        query = new DownloadManager.Query();
        cursor c = null;
        if(query!=null) {
            query.setFilterByStatus(DownloadManager.STATUS_Failed|DownloadManager.STATUS_PAUSED|DownloadManager.STATUS_succesSFUL|DownloadManager.STATUS_RUNNING|DownloadManager.STATUS_PENDING);                                         
        } else {
            return flag;
        }

        while (downloading) {
            c = mManager.query(query);
            if(c.moveToFirst()) { 
                Log.i ("FLAG","Downloading");
                int status =c.geTint(c.getcolumnIndex(DownloadManager.columN_STATUS)); 

                if (status==DownloadManager.STATUS_succesSFUL) {
                    Log.i ("FLAG","done");
                    downloading = false;
                    flag=true;
                    break;      
                }
                if (status==DownloadManager.STATUS_Failed) {
                    Log.i ("FLAG","Fail");
                    downloading = false;
                    flag=false;
                    break;
                }
            }
        }

        return flag;
    }catch (Exception E) {
        flag = false;
        return flag;
    }    
}

大佬总结

以上是大佬教程为你收集整理的android – 如何接收下载管理器意图的状态,直到下载成功或失败全部内容,希望文章能够帮你解决android – 如何接收下载管理器意图的状态,直到下载成功或失败所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。