简单的为新手做个分享。 

网上有些资料,不过都是很零散,或是很乱的,有的人说看不懂。 一直有新手说 做到服务器更新APK时没有思路,这里做个简单的分享,希望有不同思路的可以讨论。 

下面做个很简单的读取处理和讲解思路。 代码带有注释:

 try {  URL url = new URL(params[0]);  HttpURLConnection connection = (HttpURLConnection) url  .openConnection();  connection.setConnectTimeout(10 * 1000); //超时时间 connection.connect();  //连接if (connection.getResponseCode() == 200) { //返回的响应码200,是成功. File file = new File("/mnt/sdcard/yang/dujinyang.apk");   //这里我是手写了。建议大家用自带的类file.createNewFile();  InputStream inputStream = connection.getInputStream();  ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); //缓存 byte[] buffer = new byte[1024 * 10];  while (true) {  int len = inputStream.read(buffer);  publishProgress(len);  if (len == -1) {  break;  //读取完}  arrayOutputStream.write(buffer, 0, len);  //写入}  arrayOutputStream.close();  inputStream.close();  byte[] data = arrayOutputStream.toByteArray();  FileOutputStream fileOutputStream = new FileOutputStream(file);  fileOutputStream.write(data); //记得关闭输入流 fileOutputStream.close();  }  } catch (MalformedURLException e) {
.            e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }

以上是读取APK文件并保存在了本地,InputStream转为FileOutputStream保存HttpURLConnection获取到的数据 。
 那么只要再找到你的那个保存的路径就能实现安装了。

下面是安装和卸载的代码: 首先说下卸载:

Uri packageURI = Uri.parse("package:com.demo.DUJINYANG");

Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);

startActivity(uninstallIntent);

Environment拥有一些可以获取环境变量的方法 package:com.demo.DUJINYANG 这个形式是 package:程序完整的路径 (包名+程序名).

然后是 --安装:

String str = "/Dujinyang.apk"; //APK的名字

String fileName = Environment.getExternalStorageDirectory() + str; //我们上面说到路径

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setDataAndType(Uri.fromFile(new File(fileName)),

"application/vnd.android.package-archive");

startActivity(intent);

 
主要代码如下://打开APK程序代码private void openFiles(File file) {// TODO Auto-generated method stubIntent intent = new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");startActivity(intent);}  
 
当然拉 ,这里不仅一种方法:以下方法也是可行的--
//下载apk程序代码
protected File downLoadFile(String httpUrl) {final String fileName = "dujinyang.apk";File tmpFile = new File("/sdcard/update");if (!tmpFile.exists()) {tmpFile.mkdir();//创建文件夹}final File file = new File("/sdcard/update/" + fileName);try {URL url = new URL(httpUrl);try {HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream is = conn.getInputStream();FileOutputStream fileOutput= new FileOutputStream(file);byte[] buf = new byte[256];//分配byteconn.connect();double count = 0;if (conn.getResponseCode() >= 400) {Toast.makeText(Main.this, "连接超时", Toast.LENGTH_SHORT).show();} else {while (count <= 100) {if (is != null) {int numRead = is.read(buf);if (numRead <= 0) {break;} else {fileOutput.write(buf, 0, numRead);}} else {break;}}}conn.disconnect();//需要记得关闭连接fileOutput.close();is.close();} catch (IOException e) {e.printStackTrace();}} catch (MalformedURLException e) {                          e.printStackTrace();}return file;}

到这里 思路简单的理清 完了。
 
 此时可以根据你自身的项目去整改。如果新手还有不懂的可以私聊。
 
 --分享 希望大家有好的代码可以分享,共同讨论

android 从服务器上获取APK下载安装相关推荐

  1. android服务下载apk下载地址,android 从服务器上获取APK并下载安装

    简单的为新手做个分享.   网上有些资料,不过都是很零散,或是很乱的,有的人说看不懂. 一直有新手说 做到服务器更新APK时没有思路,这里做个简单的分享,希望有不同思路的可以讨论. 下面做个很简单的读 ...

  2. 【阿里云 Linux 服务器】购买 Linux 到项目部署过程中遇到的问题,部署 SpringBoot 项目到服务器上,在手机上安装 Android 程序进行测试

    文章目录 一.购买好服务器之后要重置密码 二.利用 putty 程序登录访问你的服务器 三.配置安全组开放端口 四.部署项目前期准备工作 4.1 安装 Java 4.2 安装 mysql 4.3 安装 ...

  3. android studio真机测试不生成apk,Android应用开发Android Studio编译出来的APK无法安装如何解决?...

    本文将带你了解Android应用开发Android Studio编译出来的APK无法安装如何解决?,希望本文对大家学Android有所帮助. Android Studio编译出来的APK无法安装如何解 ...

  4. windows主机用scp命令向Linux服务器上传和下载文件

    windows主机用scp命令向Linux服务器上传和下载文件 文章目录: 一.scp介绍 二.scp上传和下载 1.上传 2.下载 三.scp的更多参数 一.scp介绍 scp是secure cop ...

  5. WebRequest之HttpWebRequest实现服务器上文件的下载(一)

    WebRequest是操作WEB请求的抽象象,它作为所有WEB请求的基类,主要由FileWebRequest.FtpWebRequest.HttpWebRequest这三个类进行实现.(选自MSDN) ...

  6. Android PackageManagerService 总结(一)应用市场下载安装apk流程

    前言: 本篇文章是对系统包安装流程的总结,基于Android12 上 com.android.packageinstaller 源码的分析,第三方应用商城(华为商城,小米商城,应用宝,豌豆荚,酷安等) ...

  7. 96.android 简单的更新APP、下载安装APK(四种方式)

    //第一种 下载更新使用OKHttp+ProgressDialog进度条+第三方AlertDialog //第一步 在Manifest.xml里面写权限: <!-- 网络权限--> < ...

  8. apk下载安装,存储的位置,路径

    From: http://www.oschina.net/question/1249832_126587 来自华为内部资料 PackageInstaller 原理简述 应用安装是智能机的主要特点,即用 ...

  9. android+ping+root,pingpong root apk下载

    软件标签: root pingpong root是由安全研究团队Keen Team研发的一款针对三星S6/S6 Edge的刷机root工具,它的优势之处在于使用PingPong Root不会刷入第三方 ...

  10. Cisco服务器怎么安装系统,Cisco MCS服务器上Microsoft操作系统补丁安装发生故障

    当用户尝试在Cisco CallManager服务器上安装Microsoft操作系统热修复程序MS06-040时,安装失败,并显示错误消息"您没有更新的权限".请与您的系统管理员联 ...

最新文章

  1. 计算机软件考试预测,2020年计算机软件水平考试信息技术处理员预测试题及参考答案...
  2. 本周技术主题-----.net中的资源文件
  3. 七十一、Vue项目城市选择页搜索逻辑实现,边输入边搜索功能的解决办法:节流函数
  4. MySQL——基本配置
  5. netframework 4.0内置处理JSON对象
  6. python特性 property_python之中特性(attribute)与属性(property)有什么区别?
  7. 苹果终于迷途知返?还是指纹识别更香...
  8. Mysql学习总结(19)——Mysql无法创建外键的原因
  9. PTA—计算摄氏温度(C语言)
  10. TMS320C55x的寄存器
  11. 查询性能优化 in and union
  12. Python练习5-正则表达式
  13. 你得真心喜欢些什么,才能过好漫长的冬天
  14. 调幅广播系统建模与仿真
  15. 2020-11-30 DOA估计/方向谱分析 中文书单
  16. openresty实现隧道代理
  17. Mac 双系统分区合并
  18. VB.Net实现身份证读卡器调用读取身份证信息和社保卡信息
  19. 普通本科毕业一年,靠着这1000道JAVA面试题,终逆袭上岸
  20. 100-days: twenty-four

热门文章

  1. UG与PROE哪个好用,主要看是用在哪里
  2. 电脑键盘灯光的调节方法
  3. 随访软件的计算机技术,患者随访管理系统
  4. SQL建表及插入数据
  5. android数据线接口定义,数据线接口种类(手机数据线原来还有这几种!)
  6. inter uhd graphics630显卡驱动_极为全面的!从零开始的!小白都能看懂的!硬件科普#4 显卡选择篇...
  7. 摄氏度和开氏度的换算_开尔文与摄氏度的换算关系
  8. Matlab 根号的输入
  9. 牛顿迭代法求解根号a的Matlab代码
  10. EMD(经验模态分解)