Android中下载、安装和卸载(原)

应用场景:在检查版本更新的时候经常需要从服务器端下载然后安装到手机中

使用工具: XUtils,这个开源的框架真的是需要花大把时间去阅读和理解的,十分有用的,on the way ! fighting!

下载:github中关键字搜索即可download

 

 1 //google提供的保留地址,不会随着电脑ip地址的变化而改变测试ip地址
 2 private static final String mDownloadUrl= "http://10.0.2.2:8080/xxx.apk";
 3 
 4 protected void downloadApk() {
 5 
 6         if (Environment.getExternalStorageState().equals(
 7                 Environment.MEDIA_MOUNTED)) {
 8         //下载apk到sd的路径
 9             String sdPath = Environment.getExternalStorageDirectory()
10                     .getAbsolutePath() + File.separator + "xxx.apk";
11             HttpUtils httpUtils = new HttpUtils();
12 
13             httpUtils.download(mDownloadUrl, sdPath,
14                     new RequestCallBack<File>() {
15 
16                         @Override
17                         public void onStart() {
18                             Log.i(tag, "开始下载");
19                             super.onStart();
20                         }
21 
22                         @Override
23                         public void onLoading(long total, long current,
24                                 boolean isUploading) {
25                             Log.i(tag, "正在下载中");
26                             Log.i(tag, "total = " + total);
27                             Log.i(tag, "current = " + current);
28                             super.onLoading(total, current, isUploading);
29                         }
30 
31                         @Override
32                         public void onSuccess(ResponseInfo<File> responseInfo) {
33                             Log.i(tag, "下载完成");
34                             //获取下载好的文件路径
35                             File file = responseInfo.result;
36                 //安装apk
37                             installApk(file);
38 
39                         }  
40 
41                         @Override
42                         public void onFailure(HttpException error, String msg) {
43                             Log.i(tag, "下载失败");
44                         }
45 
46                     });
47         }
48     }
View Code

 

通过隐式意图去实现下载

  通过查询源码把下面代码抠出来

 

/** <intent-filter> <action android:name="android.intent.action.VIEW" />* <category android:name="android.intent.category.DEFAULT" /> 
* <data android:scheme="content" /> <data android:scheme="file" />
* <data android:mimeType="application/vnd.android.package-archive" />* </intent-filter>*/

 

 然后就是一个简单的隐式意图开启Activity的过程

 

protected void installApk(File file) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");/** intent.setData(Uri.fromFile(file));* intent.setType("application/vnd.android.package-archive");*/
          //与被注释代码等价,但推荐使用下述方法,被注释方法存在一个finish问题intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");startActivity(intent);}

 

 //卸载应用的方法同上,找到对应的源码,查看安卓系统是怎么实现的

 

 

<intent-filter><action android:name="android.intent.action.VIEW" /><action android:name="android.intent.action.DELETE" /><category android:name="android.intent.category.DEFAULT" /><data android:scheme="package" />
</intent-filter>

//同上,开启意图即可

protected void uninstall(){	Intent intent = new Intent();intent.setAction(Intent.ACTION_DELETE);
     intent.addCategory("android.intent.category.DEFAULT");intent.setData(Uri.parse("package:"+包名));startActivity(intent); }

  

 

转载于:https://www.cnblogs.com/adv-qbj/p/4715274.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android加载图片OOM错误解决方式

前几天做项目的时候&#xff0c;甲方要求是PAD &#xff08;SAMSUNG P600 10.1寸 2560*1600&#xff09;的PAD上显示高分辨率的大图片。 SQLITE採用BOLD方式存储图片&#xff0c;这个存取过程就不说了哈&#xff0c;网上一大堆。 可是在加载/读取/显示图片的时候会报OOM错误&am…

C# 对Ini文件操作(C# ini文件操作类)

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** /* C# 对Ini文件操作&#xff08;C# ini文件操作类&#xff09; [IniFiles.cs] 蝶晓…

python对文件进行读写操作

2019独角兽企业重金招聘Python工程师标准>>> python进行文件读写的函数是open或file file_handler open(filename,,mode&#xff09; Table mode 模式描述r以读方式打开文件&#xff0c;可读取文件信息。w以写方式打开文件&#xff0c;可向文件写入信息。如文件存在…

android:contentDescription

android:contentDescription这个属性相信大家并不陌生&#xff0c;在ImageButton的使用过程中如果不添加这个属性会有警告信息。 那么android:contentDescription究竟是干什么的呢&#xff1f;今天查了下资料才知道这个属性的真正作用。 该属性为视力障碍的用户提供方便&#x…

c#中bin,obj,properties文件夹的作用

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** Bin目录用来存放编译的结果&#xff0c;bin是二进制binrary的英文缩写&#xff0c;因为…

getAttribute实例例java_Java ExifInterface.getAttribute方法代码示例

import android.media.ExifInterface; //导入方法依赖的package包/类public static void copyExif(ExifInterface originalExif, int width, int height, String imageOutputPath) {String[] attributes new String[]{ExifInterface.TAG_APERTURE,ExifInterface.TAG_DATETIME,…

检测SDWebImage有没有缓存图片 IOS 获取网络图片大小

判断图片是否缓存NSURL *url [NSURL URLWithString:[model.content objectForKey:"image"]];//请求网络地址数据的同步方法//因为这个方法在子线程(全局队列)中执行,所以不需要考虑死线程的问题SDWebImageManager *manager [SDWebImageManager sharedManager];[man…

mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法...

发现问题 切换到mac平台后&#xff0c;突然想写点程序运行在mac下&#xff0c;想到mac自带java&#xff0c;会方便好多。不过在这过程中遇到了麻烦&#xff1a; 总是提示 “错误: 找不到或无法加载主类” 工程结构 查了好久&#xff0c;终于找到原型所在&#xff0c;发现网上很…

[转]VisualStudio如何组织解决方案的目录结构

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 解决方案与项目&#xff1a; 从VC6之后VC系列就使用解决方案&#xff08;Solution&…

java几种删除_几种删除Linux目录的方法

在Linux中有很多方法可以删除目录&#xff0c;在图形化界面可以利用文件管理器&#xff0c;或者通过终端删除。本文将介绍在文本界面使用命令删除目录。使用rmdir删除目录Rmdir命令间成“remove directory”&#xff0c;用于删除空目录的命令。例如&#xff0c;删除一个名为“M…

php公钥模数,php – 如何从公共指数和RSA模数生成DER / PEM证书?

众所周知,公钥由公共指数和模数组成.我的问题是&#xff1a;如何从公共指数和RSA模数生成DER / PEM证书&#xff1f;非常感谢你提前.解决方法:使用公共指数和模数,你可能希望做的最好的事情是得到这样的东西&#xff1a;-----BEGIN PUBLIC KEY-----MIGGAoGAfHlcdrcuOK6C02rbGR3…

C# DataTable的詳細用法

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** DataTable 是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是A…

【SpringMVC】SpringMVC系列6之@CookieValue 映射请求Cookie 值

6、CookieValue 映射请求Cookie 值 6.1、示例 CookieValue 可让处理方法入参绑定某个 Cookie 值&#xff0c;示例如下&#xff1a;

杭电OJ-2104_hide handkerchief超简洁代码

#include<iostream> using namespace std; int n, m;; int zz(int a, int b) {return b0 ? a: zz(b, a%b); } int main() {while (cin >> n >> m&&n ! -1 && m ! -1)cout << (nb(n, m) 1 ? "YES" : "POOR Haha"…

php 年月日 中文,转换中文日期的PHP程序

转换中文日期的PHP程序本程序将中文日期输出为2001-12-23&#xff0c;并很好解决了“十”的问题&#xff0c;如“十一”和“二十一”中“十”的处理&#xff01;稍加修改可改为函数。跟随小编去看看吧&#xff01;希望对大家有所帮助&#xff01;$str"二零○一年十二月二十…

c# Invoke和BeginInvoke

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 转自&#xff1a;http://blog.3snews.net/html/30/34530-27563.html在多线程编程中&am…

Oracle手边常用70则脚本知识汇总

Oracle手边常用70则脚本知识汇总 作者&#xff1a;白宁超 时间&#xff1a;2016年3月4日13:58:36 摘要: 日常使用oracle数据库过程中&#xff0c;常用脚本命令莫不是用户和密码、表空间、多表联合、执行语句等常规操作。另外表的导入导出也很常用&#xff0c;这些脚步命令之前都…

php常见的面试题目

一. 基本知识点1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。200 : 请求成功&#xff0c;请求的数据随之返回。301 : 永久性重定向。302 : 暂时行重定向。401 : 当前请求需要用户验证。403 : 服务器拒绝执行请求&#xff0c;即没有权限。404 : 请求失…

php表示私有变量的是,PHP 访问私有和受保护的成员变量

示例反射通常用作软件测试的一部分&#xff0c;例如在运行时创建/实例化模拟对象。这对于在任何给定时间点检查对象的状态也非常有用。这是在单元测试中使用Reflection来验证受保护的类成员是否包含期望值的示例。下面是一个非常基础的汽车课。它具有受保护的成员变量&#xff…

BZOJ2683 简单题(CDQ分治)

传送门 之前听别人说CDQ分治不难学&#xff0c;今天才知道果真如此。之前一直为自己想不到CDQ的方法二很不爽&#xff0c;今天终于是想出来了一道了&#xff0c;太弱…… cdq分治主要就是把整段区间分成两半&#xff0c;然后用左区间的值去更新右区间的答案&#xff0c;每次把…