大佬教程收集整理的这篇文章主要介绍了Android开发之自带下载器DownloadManager的使用示例代码,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Android 开发中,经常有从服务器下载数据的需求出现,尤其是在线更新App的情形。其基本思路是根据本地的App版本号和服务器的版本号进行比较,如果服务器版本较新,再进行提示然后下载Apk最后进行安装。这种需求解决方案有很多,第三方的网络框架基本都有这个功能。
Android@L_616_3@的DownloadManager是一个很好的下载文件的工具。该类在API level 9之后出现,它已经帮我们处理了下载失败、重新下载等功能,整个下载过程全部交给系统负责,不需要我们过多的处理,非常的nice。关键的是用起来也很简单,很爽,稍微封装一下就可以几句话搞定下载。
下面以一个简单案例来实现从服务器下载一个Apk文件并进行安装。
2、开启tomcat,然后确保能从浏览器下载
3、编写DownloadManager工具类,代码注释很详细
public class DownloadUtils { //下载器 private DownloadManager downloadManager; //上下文 private Context mContext; //下载的ID private long downloadId; public DownloadUtils(Context context){ this.mContext = context; } //下载apk public void downloadAPK(String url,String Name) { //创建下载任务 request request = new request(Uri.parse(url)); //移动网络情况下是否允许漫游 request.setAllowedOverroaR_129_11845@ing(false); //在通知栏中显示,默认就是显示的 request.setNotificationVisibility(DownloadManager.request.VISIBILITY_VISIBLE); request.settitle("新版本Apk"); request.setDescription("Apk Downloading"); request.setVisibleInDownloadsUi(true); //设置下载的路径 request.setDesTinationInExternalPublicDir(Environment.getExternalStorageDirectory().getAbsolutePath(),Name); //获取DownloadManager downloadManager = (DownloadManager) mContext.getSystemservice(Context.DOWNLOAD_serviCE); //将下载请求加入下载队列,加入下载队列后会给该任务返回一个long型的id,通过该id可以取消任务,重启任务、获取下载的文件等等 downloadId = downloadManager.enqueue(request); //注册广播接收者,监听下载状态 mContext.registerReceiver(receiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); } //广播监听下载的各个状态 private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context,Intent intent) { checkStatus(); } }; //检查下载状态 private void checkStatus() { Query query = new Query(); //通过下载的id查找 query.setFilterById(downloadId); cursor c = downloadManager.query(query); if (c.moveToFirst()) { int status = c.geTint(c.getcolumnIndex(DownloadManager.columN_STATUS)); switch (status) { //下载暂停 case DownloadManager.STATUS_PAUSED: break; //下载延迟 case DownloadManager.STATUS_PENDING: break; //正在下载 case DownloadManager.STATUS_RUNNING: break; //下载完成 case DownloadManager.STATUS_succesSFUL: //下载完成安装APK installAPK(); break; //下载失败 case DownloadManager.STATUS_Failed: Toast.makeText(mContext,"下载失败",Toast.LENGTH_SHORT).show(); break; } } } //下载到本地后执行安装 private void installAPK() { //获取下载文件的Uri Uri downloadFileUri = downloadManager.getUriForDownloadedFile(downloadId); if (downloadFileUri != null) { Intent intent= new Intent(Intent.ACTION_VIEW); intent.setDataAndType(downloadFileUri,"application/vnd.android.package-archive"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); } } }
4、编写Activity代码初始化工具类,然后下载
public class MainActivity extends AppCompatActivity { private DownloadUtils downloadUtils; @Override protected void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_main); downloadUtils = new DownloadUtils(MainActivity.this); downloadUtils.downloadAPK("http://192.168.1.104:8080/XXX.apk","XXX.apk"); } }
5、配置权限
<!--在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYstemS"/> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 从SDCard读取数据权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <!-- 访问网络权限 --> <uses-permission android:name="android.permission.INTERNET"/>
6、运行结果
运行以后会去下载服务器的Apk,通知栏也会有相应的通知。当下载完毕以后,会弹出安装界面。
主界面
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的Android开发之自带下载器DownloadManager的使用示例代码全部内容,希望文章能够帮你解决Android开发之自带下载器DownloadManager的使用示例代码所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。