android 版本更新 apk,Android 版本升级(APK下载和安装)

本文详细介绍了Android应用版本更新的过程,包括检测新版本、下载管理和安装步骤。通过DownloadManager进行apk下载,并使用BroadcastReceiver监听下载完成,然后提示用户安装。同时提到了权限配置和LeakCanary在内存泄露检测中的作用。

摘要生成于 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);

}

}

}

}

android 判断网络时打开设置

android判断网络时打开设置配置文件uses-permissionandroid:name=android.permission.ACCESS_NETWORK_STATE/uses-permissionandroid:name=android.permission.INTERNET/打开设置btn.setOnClickList

LeakCanary小记

简要介绍:LeakCanary是Square提供的一个开源类库,用于快速检测内存泄露。在LeakCanary出现之前检测内存泄露很麻烦,需要先把内存Dump出来,再用MAT(MemoryA

android 手机屏幕密度等级和屏幕逻辑尺寸

在android开发中常常会使用到手机屏幕密度和屏幕逻辑尺寸来进行屏幕适配,这里就列出常见手机的屏幕参数列表:像素密度等级逻辑像素密度屏幕像素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值