本帖最后由 huabinsir 于 2014-11-13 15:16:54 编辑

解决方案 »

  1.   

    学习能力往往比解决某一个知识点重要的多,遇到一个不熟悉的东西,第一反应不是说自己不知道而是要思考怎么学习它,这是作为一个程序员最基本的能力了,我的步骤:
    1.理解DownloadManager这个类,很简单的方法,看系统注释,光标悬停在该类上面,该类会有对应的提示:里面已经表达的很清楚了,抓住几点点:
    (1)作用是用来处理一个常时间运行的HTTP下载目标文件的系统服务
    (2)通过android.content.Context.getSystemService(String) 类来构建一个DownloadManager类实例
    (3)通过请求URI地址来下载
    (4)需要给 ACTION_NOTIFICATION_CLICKED注册一个广播接收器来处理通知栏的下载信息或者用户下载界面的单击消息
    (4)注意在添加android.Manifest.permission.INTERNET 权限
    所以第一和第二句代码很好理解了
    2.接下来追踪getExternalStoragePublicDirectory类很明显的提示,设置一个特定类型的文件目录,什么特定类型?里面已经有提示了就是DIRECTORY_DOWNLOADS类型,也就是下载类型的目录,ok第三行代码搞定
    3.接下来追踪Request类第一句话就解释了:用来新建一个下载请求
    整句话 Request dwreq = new DownloadManager.Request(uri);
    代表新建一个下载请求,请求地址为uri
    至于这2句:dwreq.setTitle(getString(R.string.download_title));
    dwreq.setDescription(getString(R.string.download_description)); 
    提示也说的明明白白的就是在通知栏设置一个下载进度条类似标题和描述,我相信你关于这个下载场景你应该见过。
    4.setDestinationInExternalPublicDir这个函数一样有提示,就是开始下载uri文件并把它下载到对应的文件目录设置文件名。
    什么?你看不懂英文,请使用google Translate翻译,我四级都没过都能勉强看懂你还看不懂?
      

  2.   

    忘了回答你的问题了,系统方法的提示描述是“top-level public external storage directory”最顶级的SD卡的目录也就是SD卡的根目录。