Android 版本升级(APK下载和安装)

本文介绍了一种通过服务器检测应用更新并自动下载至设备的机制,详细阐述了使用DownloadManager实现应用下载流程,包括下载请求配置、下载状态监听及安装提示。此过程确保了用户在无需手动操作的情况下获得最新应用版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将手机上应用版本号等相关信息发送到服务器,服务器检测是否有新版本。如果有新版本,将返回客户端版本号、版本名称、下载地址、版本更新说明等信息。客户端获取到此信息后,将询问用户是否下载,确定后,开始下载。下载完成后开始提示安装。


调用系统DownloadManager实现下载:

DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request( 版本下载地址);

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "xxx.apk");//将apk下载到download默认目录
request.allowScanningByMediaScanner();
request.setMimeType("application/cn.trinea.download.file");
long downloadId = downloadManager.enqueue(request);//每个下载请求对应一个downloadId

PrefUtils.setLong(PrefUtils.DOWNLOAD_ID, downloadId);//暂存到Preference中

下载完成后,将发送DownloadManager.ACTION_DOWNLOAD_COMPLETE广播。因此需要建立一个Broadcast Receiver来接收广播,确认下载成功后进行安装提示。


public class DownloadCompleteReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		long completeDownloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);

		if (completeDownloadId != -1 && completeDownloadId == PrefUtils.getLong(PrefUtils.DOWNLOAD_ID, -1)) {

			DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
			DownloadManager.Query query = new DownloadManager.Query().setFilterById(completeDownloadId);
			Cursor cursor = null;
			String filename = null;
			try {
				cursor = downloadManager.query(query);
				if (cursor != null && cursor.moveToFirst()) {
					
					filename = cursor.getString(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_FILENAME));
				}
			} finally {
				if (cursor != null) {
					cursor.close();
				}
			}

			if (!TextUtils.isEmpty(filename)) {

				Intent installIntent = new Intent(Intent.ACTION_VIEW);
				installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				installIntent.setDataAndType(Uri.fromFile(new File(filename)),"application/vnd.android.package-archive");
				context.startActivity(installIntent);
			}
		}

	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值