android+后台下载notification,Android实现Service下载文件,Notification显示下载进度的示例...
先放个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显示下载进度的示例...相关推荐
- python实现http下载文件-Python HTTP下载文件并显示下载进度条功能的实现
下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: im ...
- android后台文件下载库,android中如何下载文件并显示下载进度
最近开发中遇到需要下载文件的问题,对于一般的下载来说不用考虑断点续传,不用考虑多个线程,比如下载一个apk之类的,这篇文章讨论的就是这种情形. 这里主要讨论三种方式:AsyncTask.Service ...
- Android中如何下载文件并显示下载进度
原文地址:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1125/2057.html 这里主要讨论三种方式:AsyncTask.Serv ...
- android 后台服务拍照,Android实现后台开启服务默默拍照功能
本文实例为大家分享了Android后台开启服务默默拍照的具体代码,供大家参考,具体内容如下 最近项目原因,需要编写一后台运行的程序,在给定时间间隔下进行拍照,关键技术主要是:1.开启服务:2.在不不预 ...
- android 后台自动拍照,Android实现后台开启服务默默拍照功能
本文实例为大家分享了Android后台开启服务默默拍照的具体代码,供大家参考,具体内容如下 最近项目原因,需要编写一后台运行的程序,在给定时间间隔下进行拍照,关键技术主要是:1.开启服务:2.在不不预 ...
- air android 后台运行,AIR Android:使用模拟器运行程序
安装和运行程序 生成apk包后,对开发者来说还有一个重要的环节,那就是把程序放在设备上运行起来.这一节我们将分别在模拟器和真机上运行FlipIt游戏,看看效果如何. 使用模拟器运行程序(1) 使用An ...
- android 后台执行js,android - 当应用程序在后台运行时,Android WebView消耗大量电能...
我的Android应用程序中有一个WebView,并且此WebView运行的网站上带有相当多的Javascript.当我的应用程序在后台运行时,用户报告了高功耗,我希望这是由于此javascript. ...
- android 后台邮件发送,Android邮件发送
Android端发送邮件,比较简单,可以用于APP注册时候发送验证码什么的,需要一个用于发送邮件的邮箱,并且要将邮箱的POP3/SMTP服务开启 package tools; import andro ...
- android 后台自动拍照,Android实现后台服务拍照功能
一.背景介绍 最近在项目中遇到一个需求,实现一个后台拍照的功能.一开始在网上寻找解决方案,也尝试了很多种实现方式,都没有满意的方案.不过确定了难点:即拍照要先预览,然后再调用拍照方法.问题也随之而来, ...
- android后台获取view,android – 如何获取当前显示在AdapterView中的项目?
实现OnScrollListener 06000 并在listView中设置OnScrollListener listView.setOnScrollListener(NewsCategoryDC.t ...
最新文章
- zabbix 安装时的报错mysql_connect(): Access denied for us
- 在线答题系统开发经验mysql,php
- 收藏:TerryLee的.NET设计模式系列文章
- 【业务知识】企业数字档案馆总体架构图
- 这里有一篇简单易懂的webSocket 快到碗里来~
- Apollo自动驾驶入门课程第⑨讲 — 控制(上)
- android dp sp px_Android屏幕适配★★重点盘点★★
- maven 打包时缺少文件_maven父子工程---子模块相互依赖打包时所遇到的问题:依赖的程序包找不到...
- 【youcans 的 OpenCV 例程 200 篇】111. 雷登变换反投影重建图像
- npm aes 加密(js aes 加密)
- 促销海报模板|经典蓝的带着「节日促销」来搞事情了!
- Arcgis软件应用(四)网络分析
- 约瑟夫问题_公式原理详解
- 工程测量(平面高程控制网)
- 51单片机的红外遥控
- TrueCrypt 使用经验[2]:关于加密
- Oracle常用文档整理
- Python + ElasticSearch:有了这个超级武器,你也可以报名参加诗词大会了! | 博文精选...
- tableau高级绘图(六)--tableau绘制范围点图
- vuecli4+vant移动端响应式项目踩坑记录
热门文章
- 蜘蛛爬虫的抓取策略有哪些呢?
- 【Deep Learning】笔记:Understanding the difficulty of training deep feedforward neural networks
- Java版 凯撒密码 加密、解密、暴力破解
- AG9310MFQ设计方案|AG9310电路参考|USB Type C 转HDMI内置SPI
- python 字符串执行函数(带参数)方法总结
- 最小堆、最大堆构建、插入、删除过程图解
- 前端js实现路由切换页面 pushState replaceState
- JAVA内存泄漏和内存溢出的区别和联系
- WPF调用WebService
- 七牛云联合浦软发起成立“人工智能产研创新联盟”