Android应用中apk下载更新,适用于android 9及以下安卓版本。
直接上代码:
一、在主配置文件中写权限。
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" /><!-- 连网必须加的 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- SDCard写权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- SDCard读权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.MODE_PRIVATE" /> <!-- 创建文件夹 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!-- 安装权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.PERMISSION_GRANTED" />
<application> //在此加入
<provider
android:name="androidx.core.content.FileProvider" //也可以引用v4包
android:authorities="com.example.myapplication1.provider" //注意.provider前面为你的包名
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/files_paths" /> //在res文件夹下新建package命名为xml,新建xml文件命名为files_paths
</provider>
</application>
二、创建 files_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<external-path name="renyi" path=""/>
</paths>
</resources>
三、创建 UpdateVersionController.java
public class UpdateVersionController {
private Button cancelBtn;
private Context context;
private int info;
private int info3;
private int versionCode;//当前版本号
private Dialog dialog; //提示用户更新的dialog
private ProgressDialog pd; //下载进度条
public static UpdateVersionController getInstance(Context context) {
return new UpdateVersionController(context);
}
public UpdateVersionController(Context context) {
this.context = context;
}
/*
* 记得运行该方法
*/
public void forceCheckUpdateInfo(){
//获取版本号,这个版本号为未更新的版本号
versionCode = getVerCode(context);
//获取app新版版本信息,添加网络请求
new Thread(new Runnable() {
@Override
public void run() {
/*
*用的Volley框架,Volley可以自己搜索下载jar包,下面是使用Volley获取GET请求的方法
*/
RequestQueue mQueue= Volley.newRequestQueue(context);
JsonObjectRequest mreq=new JsonObjectRequest(Request.Method.GET,“获取版本号的网址”,new Response.Listener<J