public class MainActivity extends Activity {private File apkFile;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void downloadAPK(View v) {//1). 主线程, 显示提示视图: ProgressDialogfinal ProgressDialog dialog = new ProgressDialog(this);dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);dialog.show();//准备用于保存APK文件的File对象 : /storage/sdcard/Android/package_name/files/xxx.apkapkFile = new File(getExternalFilesDir(null), "update.apk");//2). 启动分线程, 请求下载APK文件, 下载过程中显示下载进度new Thread(new Runnable() {@Overridepublic void run() {try {//1. 得到连接对象String path = "http://192.168.10.165:8080/Web_Server/L04_DataStorage.apk";URL url = new URL(path);HttpURLConnection connection = (HttpURLConnection) url.openConnection();//2. 设置//connection.setRequestMethod("GET");connection.setConnectTimeout(5000);connection.setReadTimeout(10000);//3. 连接connection.connect();//4. 请求并得到响应码200int responseCode = connection.getResponseCode();if(responseCode==200) {//设置dialog的最大进度dialog.setMax(connection.getContentLength());//5. 得到包含APK文件数据的InputStreamInputStream is = connection.getInputStream();//6. 创建指向apkFile的FileOutputStreamFileOutputStream fos = new FileOutputStream(apkFile);//7. 边读边写byte[] buffer = new byte[1024];int len = -1;while((len=is.read(buffer))!=-1) {fos.write(buffer, 0, len);//8. 显示下载进度dialog.incrementProgressBy(len);//休息一会(模拟网速慢)//Thread.sleep(50);SystemClock.sleep(50);}fos.close();is.close();}//9. 下载完成, 关闭, 进入3)connection.disconnect();//3). 主线程, 移除dialog, 启动安装runOnUiThread(new Runnable() {@Overridepublic void run() {dialog.dismiss();installAPK();}});} catch (Exception e) {e.printStackTrace();}}}).start();//09-05 12:59:20.553: I/ActivityManager(1179): Displayed com.android.packageinstaller/.PackageInstallerActivity: +282ms}/*** 启动安装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);}
}

如果有帮到你,欢迎加入我的Java与Android逆向开发交流QQ群,一起交流学习。

java 下载apk并安装-代码实例相关推荐

  1. Android7.0下载Apk自动安装

    Android7.0下载Apk自动安装 1. 整体需求 下载APK文件 使用DownloadManager来下载 在应用界面中展示下载进度 安装下载后的APK文件 root模式: 可以自动安装,不需要 ...

  2. java字典写实例,基于JAVA的新华字典接口调用代码实例

    基于JAVA的新华字典接口调用代码实例 接口描述:基于JA V A的新华字典接口调用代码实例 接口平台:聚合数据 import java.io.BufferedReader; import java. ...

  3. java订单类_基于Java创建一个订单类代码实例

    这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...

  4. java订单类_使用Java创建一个订单类代码实例

    这篇文章主要简介了使用Java创建一个订单类代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 需求描述 定义一个类,描述订单信息 订单id ...

  5. Java代码制作ie浏览器_[Java教程]判断IE浏览器代码实例

    [Java教程]判断IE浏览器代码实例 0 2015-08-12 01:00:19 判断IE浏览器代码实例: 由于当下浏览器类型众多,并且对同一段代码的解读有时候各有不同,所以要根据浏览器的类型来执行 ...

  6. 利用OpenSearch API检索和下载数据 附Python代码实例

    利用OpenSearch API检索和下载数据 附Python代码实例 在数据下载过程中,我们常常会需要下载非常多的数据文件,这时我们可以利用wget等软件或者编写数据下载脚本来实现数据下载的批处理. ...

  7. 用java下载apk解析包出错_安装apk解析包时出现错误怎么办

    安装apk解析包时出现错误怎么办 安装apk解析包时出现错误怎么办相信许多使用Android智能手机的用户都会或多或少的遇到到这样的问题--"解析包时出现错误".那么遇到这样的问题 ...

  8. 安卓笔记之xutil下载apk并安装

    使用第三方框架xutil:下载apk文件并安装. 进入到安装页面 Intent intent = new Intent(Intent.ACTION_VIEW);intent.addCategory(I ...

  9. 使用Android自带的DownloadManager下载ApK并安装

    一.在 AndroidManifest.xml 中的准备 进行网络请求,需要申请<uses-permission android:name="android.permission.IN ...

最新文章

  1. 下一代 MES,智能制造的骨架
  2. python基础知识资料-python基础知识整理(值得收藏)
  3. Oracle: 数字前面自动补0几种方式
  4. PAT甲级1116 Come on! Let‘s C:[C++题解]哈希表、素数
  5. Office远程代码执行漏洞补丁(905413)
  6. android EditText 控件中加入图片(非背景图片)
  7. android ndk 文件管理,Android NDK开发指南(二)Android.mk文件
  8. 【codevs1368】【BZOJ1034】泡泡堂BNB,贪心思路
  9. 华为P40售价曝光:有点不敢相信
  10. 调用拷贝构造函数的场景
  11. Effective Java(二)—— 循环与 StringBuilder
  12. NuGet无法下载的问题
  13. java基础 第四章 下(数组)
  14. 织梦dedecms全自动采集的方法
  15. 前轮反馈控制(Stanley) 法
  16. 【毕业设计/课程设计】企业员工绩效考评APP的设计与实现
  17. 蓝桥杯——摔手机 动态规划
  18. Java入门之顺序、选择、循环结构
  19. 如何对U盘文件数据加密,U盘加密方法教程分享
  20. 对接支付宝单笔转账接口

热门文章

  1. 渲染基础:环境光、漫反射、镜面光
  2. 美团获取cookie(使用PC浏览器)
  3. 名单揭晓 | 2021年度中国杰出知识产权服务团队
  4. 周传雄【男人.海洋】
  5. 宽带连接错误的处理办法(691、623、678、645、720、721、718、734、769、619、676、815)
  6. StripSlashes 函数详解
  7. 21天养成良好习惯-20
  8. vue脚手架做的项目如何放在服务端,vue项目部署到服务器
  9. PDF怎么转Word?简单几步轻松操作
  10. Array数组对象sort排序方法