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

 

使用第三方框架xutil:下载apk文件并安装。

                进入到安装页面

                        Intent intent = new Intent(Intent.ACTION_VIEW);
			intent.addCategory(Intent.CATEGORY_DEFAULT);//arg0.result返回iFile对象(下载的apk文件),
		        intent.setDataAndType(Uri.fromFile(arg0.result),//在6.0之后此处会报错
                        // 需要导入jar包:org.apache.http.legacy.jar"application/vnd.android.package-archive");

                PackageInstall/AndroidMainfast.xml                          

 <activity android:name=".PackageInstallerActivity"
                android:configChanges="orientation|keyboardHidden"
                android:theme="@style/Theme.Transparent">
            <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>    


实例代码:

mDownloadUrl:下载连接 

target:文件下载的路径

protected void download() {
		if (Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED)) {

			tvProgress.setVisibility(View.VISIBLE);// 显示进度

			String target = Environment.getExternalStorageDirectory()
					+ "/update.apk";
			// XUtils
			HttpUtils utils = new HttpUtils();
			utils.download(mDownloadUrl, target, new RequestCallBack<File>() {

				// 下载文件的进度, 该方法在主线程运行
				@Override
				public void onLoading(long total, long current,
						boolean isUploading) {
					super.onLoading(total, current, isUploading);
					System.out.println("下载进度:" + current + "/" + total+"%");
				}
				// 下载成功,该方法在主线程运行
				@Override
				public void onSuccess(ResponseInfo<File> arg0) {
				    System.out.println("下载成功");
				    // 跳转到系统安装页面
				    Intent intent = new Intent(Intent.ACTION_VIEW);
				    intent.addCategory(Intent.CATEGORY_DEFAULT);//arg0.result返回iFile对象(下载的apk文件),
				    intent.setDataAndType(Uri.fromFile(arg0.result),//在6.0之后此处会报错
                                     // 需要导入jar包:org.apache.http.legacy.jar"application/vnd.android.package-archive");
			             // startActivity(intent);
			             startActivityForResult(intent, 0);// 如果用户取消安装的话,
									// 会返回结果,回调方法onActivityResult
				}
				// 下载失败,该方法在主线程运行
				@Override
				public void onFailure(HttpException arg0, String arg1) {
					Toast.makeText(SplashActivity.this, "下载失败!",
							Toast.LENGTH_SHORT).show();
				}
			});
		} else {
			Toast.makeText(SplashActivity.this, "没有找到sdcard!",
					Toast.LENGTH_SHORT).show();
		}
	}

	// 如果用户取消安装的话,回调此方法
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		enterHome();//进入主界面
		super.onActivityResult(requestCode, resultCode, data);
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevin@1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值