先放个gif。。最终效果如果:

主要演示了Android从服务器下载文件,调用Notification显示下载进度,并且在下载完毕以后点击通知会跳转到安装APK的界面,演示是在真实的网络环境中使用真实的URL进行演示,来看看代码:

MainActivity代码非常简单,就是启动一个Service:

public class MainActivity extends AppCompatActivity {

String download_url="http://shouji.360tpcdn.com/160329/a9037075b8d3aa98fbf6115c54a5b895/com.alensw.PicFolder_4722404.apk";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void bt_start_service(View view){

Intent intent=new Intent(this,DownLoadService.class);

intent.putExtra("download_url",download_url);

startService(intent);

}

}

DownLoadService里面,在onStartCommand方法里面是关键代码,调用NotifyUtil这个工具类的“notify_progress”方法去显示一个通知,与此同时开始下载APK文件,DownLoadService代码如下:

public class DownLoadService extends Service {

String download_url;

String savePath= Environment.getExternalStorageDirectory()+"/liulan.apk";

private int requestCode = (int) SystemClock.uptimeMillis();

private NotifyUtil currentNotify;

File mFile;

@Nullable

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onCreate() {

super.onCreate();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

mFile=new File(savePath);

download_url=intent.getStringExtra("download_url");

Log.e("test","执行onStartCommand");

//设置想要展示的数据内容

Intent intent_noti = new Intent();

intent_noti.setAction(Intent.ACTION_VIEW);

//文件的类型,从tomcat里面找

intent_noti.setDataAndType(Uri.fromFile(mFile), "application/vnd.android.package-archive");

PendingIntent rightPendIntent = PendingIntent.getActivity(this,

requestCode, intent_noti, PendingIntent.FLAG_UPDATE_CURRENT);

int smallIcon = R.drawable.xc_smaillicon;

String ticker = "正在更新快图浏览";

//实例化工具类,并且调用接口

NotifyUtil notify7 = new NotifyUtil(this, 7);

notify7.notify_progress(rightPendIntent, smallIcon, ticker, "快图浏览升级程序", "正在下载中",

false, false, false, download_url, savePath, new NotifyUtil.DownLoadListener() {

@Override

public void OnSuccess(File file) {

mFile=file;

DownLoadService.this.stopSelf();

}

@Override

public void onFailure(Throwable t, int errorNo, String strMsg) {

}

});

currentNotify = notify7;

return super.onStartCommand(intent, flags, startId);

}

}

在调用“notify_progress”方法的时候,已经开始下载文件了,那么下载的代码是什么呢?如下:

public void notify_progress(PendingIntent pendingIntent, int smallIcon,

String ticker, String title, String content,

boolean sound, boolean vibrate, boolean lights,

String download_url, String savePath, final DownLoadListener listener) {

setCompatBuilder(pendingIntent, smallIcon, ticker, title, content, sound, vibrate, lights);

/*

* 因为进度条要实时更新通知栏也就说要不断的发送新的提示,所以这里不建议开启通知声音。

* 这里是作为范例,给大家讲解下原理。所以发送通知后会听到多次的通知声音。

*/

FinalHttp fh = new FinalHttp();

HttpHandler httpHandler=fh.download(download_url, savePath, new AjaxCallBack() {

@Override

public void onLoading(long count, long current) {

super.onLoading(count, current);

double a=count;

double b=current;

double currentPro=(double)((b/a)*100);

cBuilder.setProgress(100, (int)currentPro, false);

sent();

}

@Override

public void onSuccess(File file) {

super.onSuccess(file);

cBuilder.setContentText("下载完成").setProgress(0, 0, false);

sent();

listener.OnSuccess(file);

}

@Override

public void onFailure(Throwable t, int errorNo, String strMsg) {

super.onFailure(t, errorNo, strMsg);

listener.onFailure(t,errorNo,strMsg);

}

});

}

这个jar已经封装好下载的工具类,我们直接拿来用就行。下载成功之后会通过DownLoadListener这个接口回调到DownLoadService里面,最终运行效果就如最上面那个gif动态图运行效果一样。

项目下载地址:点击下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android+后台下载notification,Android实现Service下载文件,Notification显示下载进度的示例...相关推荐

  1. python实现http下载文件-Python HTTP下载文件并显示下载进度条功能的实现

    下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: im ...

  2. android后台文件下载库,android中如何下载文件并显示下载进度

    最近开发中遇到需要下载文件的问题,对于一般的下载来说不用考虑断点续传,不用考虑多个线程,比如下载一个apk之类的,这篇文章讨论的就是这种情形. 这里主要讨论三种方式:AsyncTask.Service ...

  3. Android中如何下载文件并显示下载进度

    原文地址:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1125/2057.html 这里主要讨论三种方式:AsyncTask.Serv ...

  4. android 后台服务拍照,Android实现后台开启服务默默拍照功能

    本文实例为大家分享了Android后台开启服务默默拍照的具体代码,供大家参考,具体内容如下 最近项目原因,需要编写一后台运行的程序,在给定时间间隔下进行拍照,关键技术主要是:1.开启服务:2.在不不预 ...

  5. android 后台自动拍照,Android实现后台开启服务默默拍照功能

    本文实例为大家分享了Android后台开启服务默默拍照的具体代码,供大家参考,具体内容如下 最近项目原因,需要编写一后台运行的程序,在给定时间间隔下进行拍照,关键技术主要是:1.开启服务:2.在不不预 ...

  6. air android 后台运行,AIR Android:使用模拟器运行程序

    安装和运行程序 生成apk包后,对开发者来说还有一个重要的环节,那就是把程序放在设备上运行起来.这一节我们将分别在模拟器和真机上运行FlipIt游戏,看看效果如何. 使用模拟器运行程序(1) 使用An ...

  7. android 后台执行js,android - 当应用程序在后台运行时,Android WebView消耗大量电能...

    我的Android应用程序中有一个WebView,并且此WebView运行的网站上带有相当多的Javascript.当我的应用程序在后台运行时,用户报告了高功耗,我希望这是由于此javascript. ...

  8. android 后台邮件发送,Android邮件发送

    Android端发送邮件,比较简单,可以用于APP注册时候发送验证码什么的,需要一个用于发送邮件的邮箱,并且要将邮箱的POP3/SMTP服务开启 package tools; import andro ...

  9. android 后台自动拍照,Android实现后台服务拍照功能

    一.背景介绍 最近在项目中遇到一个需求,实现一个后台拍照的功能.一开始在网上寻找解决方案,也尝试了很多种实现方式,都没有满意的方案.不过确定了难点:即拍照要先预览,然后再调用拍照方法.问题也随之而来, ...

  10. android后台获取view,android – 如何获取当前显示在AdapterView中的项目?

    实现OnScrollListener 06000 并在listView中设置OnScrollListener listView.setOnScrollListener(NewsCategoryDC.t ...

最新文章

  1. zabbix 安装时的报错mysql_connect(): Access denied for us
  2. 在线答题系统开发经验mysql,php
  3. 收藏:TerryLee的.NET设计模式系列文章
  4. 【业务知识】企业数字档案馆总体架构图
  5. 这里有一篇简单易懂的webSocket 快到碗里来~
  6. Apollo自动驾驶入门课程第⑨讲 — 控制(上)
  7. android dp sp px_Android屏幕适配★★重点盘点★★
  8. maven 打包时缺少文件_maven父子工程---子模块相互依赖打包时所遇到的问题:依赖的程序包找不到...
  9. 【youcans 的 OpenCV 例程 200 篇】111. 雷登变换反投影重建图像
  10. npm aes 加密(js aes 加密)
  11. 促销海报模板|经典蓝的带着「节日促销」来搞事情了!
  12. Arcgis软件应用(四)网络分析
  13. 约瑟夫问题_公式原理详解
  14. 工程测量(平面高程控制网)
  15. 51单片机的红外遥控
  16. TrueCrypt 使用经验[2]:关于加密
  17. Oracle常用文档整理
  18. Python + ElasticSearch:有了这个超级武器,你也可以报名参加诗词大会了! | 博文精选...
  19. tableau高级绘图(六)--tableau绘制范围点图
  20. vuecli4+vant移动端响应式项目踩坑记录

热门文章

  1. 蜘蛛爬虫的抓取策略有哪些呢?
  2. 【Deep Learning】笔记:Understanding the difficulty of training deep feedforward neural networks
  3. Java版 凯撒密码 加密、解密、暴力破解
  4. AG9310MFQ设计方案|AG9310电路参考|USB Type C 转HDMI内置SPI
  5. python 字符串执行函数(带参数)方法总结
  6. 最小堆、最大堆构建、插入、删除过程图解
  7. 前端js实现路由切换页面 pushState replaceState
  8. JAVA内存泄漏和内存溢出的区别和联系
  9. WPF调用WebService
  10. 七牛云联合浦软发起成立“人工智能产研创新联盟”