1、设置权限

2、业务代码

package com.example.esri.app04.network;

import android.app.ProgressDialog;

import android.content.Intent;

import android.net.Uri;

import android.os.SystemClock;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URI;

import java.net.URL;

public class MainActivity extends AppCompatActivity {

private File apkFile;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void downloadAPK(View v){

final ProgressDialog dialog = new ProgressDialog(this);

dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

dialog.show();

//准备用于保存apk文件的file对象 放在sd卡里面

apkFile = new File(getExternalFilesDir(null), "update.apk");

//启动分线程下载数据,显示下载进度

new Thread(new Runnable() {

@Override

public void run() {

try{

//1 得到链接对象

String path = "http://192.168.0.184:8080/storage.apk";

URL url = new URL(path);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setConnectTimeout(5000);

connection.setReadTimeout(10000);

connection.connect();

int responseCode = connection.getResponseCode();

if(responseCode == 200){

//设置dialog最大进度

dialog.setMax(connection.getContentLength());

InputStream is = connection.getInputStream();

FileOutputStream fos = new FileOutputStream(apkFile);

byte[] buffer = new byte[1024];

int len = -1;

while ((len = is.read(buffer)) != -1){

fos.write(buffer, 0, len);

dialog.incrementProgressBy(len);

}

fos.close();

is.close();

}

connection.disconnect();

//主线程,移除dialog,启动安装

runOnUiThread(new Runnable() {

@Override

public void run() {

dialog.dismiss();

installAPK();

}

});

}catch (Exception e){

e.printStackTrace();

}

}

}).start();

}

/**

* 启动安装apk

*/

private void installAPK() {

Intent intent = new Intent("android.intent.action.INSTALL_PACKAGE");

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

startActivity(intent);

}

}

android服务下载apk,android下载apk并安装相关推荐

  1. android服务无法启动,Android服务无法启动(Android service would't start)

    Android服务无法启动(Android service would't start) 我正在尝试在Android中实现简单的服务,但我无法统计基本服务. 这是我的主要课程: import java ...

  2. android服务应用场景,Android Service的使用介绍

    简介 Service是Android应用程序中的一个组件,与用户不进行交互,可以长期的执行在后台.当新建一个服务的时候需要在AndroidManifest.xml文件中进行声明.服务可以通过Conte ...

  3. android服务开启线程,android之service与intentService的不同

    不知道大家有没有和我一样,以前做项目或者练习的时候一直都是用Service来处理后台耗时操作,却很少注意到还有个IntentService,前段时间准备面试的时候看到了一篇关于IntentServic ...

  4. android服务拍视频,Android仿微信拍摄、录制视频,以及视频播放(基于JCameraView和GSYVideoPlayer)...

    本项目使用Androidstudio开发工具 引入权限 引入依赖 //视频录制 implementation 'cjt.library.wheel:camera:1.1.9' //视频播放 api(' ...

  5. android 服务自动结束,Android服务自动停止

    我正在制作一个带有闹钟功能的应用程序.我正在使用这种服务,不断检查设备的当前时间与我的数据库中的时间.Android服务自动停止 我的问题是,如果应用程序从后台删除或设备是rebooted,此serv ...

  6. android服务常驻内存,android service常驻内存的一点思考

    我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4 ...

  7. Android服务模块作用,Android 9.0 AutotoMotive模块之CarService

    Android 9.0 AutotoMotive模块之CarService Android 9.0 AutotoMotive模块之CarService 上一篇对Automotive模块的Vhal作了总 ...

  8. android服务重启间隔,android – 崩溃的服务在很长一段时间后重新启动

    从 com/android/server/am/ActiveServices.java(未曝光) // How long we wait for a service to finish executi ...

  9. android服务的应用,Android学习指南之十四:Service详解及应用实例

    上一节讲到了Gallery画廊,本节主要讲解Android组件Service,主要内容包括:Service的概念.生命周期及其应用实例. 一.Service简介 Service是Android程序中四 ...

  10. android服务无法启动,Android应用程序无法启动服务

    嘿,我正在尝试在我的 Android应用程序上实现一项服务.服务必须执行活动的相同任务. IE,如果在CallLog.Calls内容提供程序上发生某些更改,则必须通知服务并将数据插入数据库,即使应用程 ...

最新文章

  1. AIX存储管理(二)物理卷管理
  2. mysql技术内幕innodb存储引擎——表索引算法和锁_(转)Mysql技术内幕InnoDB存储引擎-表索引算法和锁...
  3. php跳转传值,php如何跳转页面并传值?
  4. 数据可视化组队学习:《Task01 - Matplotlib初相识》笔记
  5. 前端学习(284):纯css实现翻书效果
  6. 微服务技术发展的现状与展望
  7. Jmeter VS LoadRunner
  8. 交换机 链路层无法udp通讯_一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题...
  9. 关于2017年总结及2018年计划
  10. 搭建高可用 RocketMQ 集群
  11. linux下ssh/sftp配置和权限设置
  12. Inkscape将位图转换为矢量图
  13. Vulkan学习(三):小结
  14. java题目练习笔记,java 20道、数量关系8道、判断推理8道、智力题8道
  15. 计算机卡住了怎样恢复,电脑经常死机,教您电脑经常死机怎么修复
  16. Tomcate安装配置
  17. OBS更改标题?标题一改,安能辨我是雌雄?
  18. memwatch使用笔记
  19. 走到最后,摩拜连姓名都不能拥有?
  20. Python字串(string)基础与20种常见操作

热门文章

  1. iBATIS In Action(六)执行非查询语句
  2. 【洛谷 1873】砍树
  3. web框架Django一
  4. luogu P1892 团伙
  5. MFC编程入门之二十(常用控件:静态文本框)
  6. Linux操作系统文件链接问题
  7. [转载] Python中int类型和string类型的相互转换
  8. [转载] 多元线性回归 及其Python实现
  9. docker入门与部署微服务--学习笔记
  10. 转:超级好用的流程图js框架