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     }

通过隐式意图去实现下载

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

/*
 * <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.setData(Uri.parse("要卸载的应用程序包名"));
	startActivity(intent);
}

  

时间: 2024-10-08 20:57:46

Android中下载、安装和卸载(原)的相关文章

Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)

一.通过Intent消息机制发送消息,调用系统应用进行,实现apk的安装/卸载 . (1) 调用系统的安装应用,让系统自动进行apk的安装 String fileName = "/data/data/com.zlc.ipanel.operate/FileOperate.apk";  Uri uri = Uri.fromFile(new File(fileName));  Intent intent = new Intent(Intent.ACTION_VIEW);  intent.se

android 实现静默安装、卸载(图)

android中应用的安装卸载,大家(用android设备的)肯定不陌生.这里就来浅谈android应用的安装.卸载的实现方式. 1.系统安装程序 android自带了一个安装程序---/system/app/PackageInstaller.apk.大多数情况下,我们手机上安装应用都是通过这个apk来安装的.代码使用也非常简单: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* 安装apk */ public static void installApk(

Inno Setup 安装前卸载原程序

Inno Setup 安装前卸载原程序 分类: Install Setup 2013-02-02 15:53 2315人阅读 评论(0) 收藏 举报 很多時候我們需要在安裝文件之前卸載原有的程序而不是覆蓋安裝,本文的code就是實現了這樣的功能. 實現原理是:從注冊表'UninstallString'項中讀取卸載信息,用Exec進行靜默卸載. 下面code中APP_NAME為你的程序名,可以去注冊表中確認. 1 function InitializeSetup(): boolean; 2 var

2018年Unity结合Android SDK下载安装及配置教程

原文:2018年Unity结合Android SDK下载安装及配置教程 首先声明: Unity版本2017.1f3 ? ? ? ?最近试着在Unity中利用网易做AR开发时,发布项目文件需要发布到Android平台,遇到一些问题,看了网上的一些资料,踩了一些坑,现在总结出来,希望有相同的开发者遇到时可以规避. 第一步.安装JDK: 第二步.安装Eclipse: 第三步.下载并安装AndroidSDK: 第四步.在Unity中发布到Android平台. 安装JDK 官网:http://www.Or

在Centos中yum安装和卸载软件的使用方法

在Centos中yum安装和卸载软件的使用方法安装方法安装一个软件时yum -y install httpd安装多个相类似的软件时yum -y install httpd*安装多个非类似软件时yum -y install httpd php php-gd mysql卸载一个软件时yum -y remove httpd卸载多个相类似的软件时yum -y remove httpd*卸载多个非类似软件时yum -y remove httpd php php-gd mysql 另外还有一个非常棒的用法假

在Centos中yum安装和卸载软件的使用方法(转)

在Centos中yum安装和卸载软件的使用方法 安装方法 安装一个软件时 yum -y install httpd 安装多个相类似的软件时 yum -y install httpd* 安装多个非类似软件时 yum -y install httpd php php-gd mysql 卸载一个软件时 yum -y remove httpd 卸载多个相类似的软件时 yum -y remove httpd* 卸载多个非类似软件时 yum -y remove httpd php php-gd mysql

android 实现静默安装、卸载

方法1:[使用调用接口方法,由于安装卸载应用程序的部分API是隐藏的,所以必须下载Android系统源码,在源码下开发并编译之后使用MM命令编译生成APK文件] import java.io.File; import android.app.Activity; import android.os.Bundle; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.

Android 中静默安装

静默安装原理: 1.需要获取root的操作权限 2.通过命令式的方式直接进行安装APK.在使用 Android Studio debug安装的时候可以看到控制台上的命令 那么就直接上代码吧: /**<p>项目名:singno</p>  * <p>包名: com.singno</p>  * <p>文件名:VersionManager.java</p>  * <p>版本信息: 2.1.0</p>  * <p&

Android中应用安装分析

#1 安装方式 1 安装系统APK和预制APK时,通过PMS的构造函数中安装,即第一次开机时安装应用,没有安装界面. 2 网络下载安装,通过应用商店等,即调用PackageManager.installPackages(),有安装界面. 3 通过adb工具安装,没有安装界面,它通过启动pm脚本的形式,然后调用com.android.commands.pm.Pm类,之后调用到PMS.installStage()完成安装. 4 安装本地apk,有安装界面,由PackageInstaller系统应用安