android app 更新下载安装,通知栏提示下载进度
- 下载功能使用了--filedownloader
implementation 'com.liulishuo.filedownloader:library:1.7.2'
- 下载地址默认为
String apkLocalPath = filePath + File.separator + packageName + "_" + serverVersionName + ".apk";
- 引用方式如下
- Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
maven { url 'https://www.jitpack.io' }
}
}
- Add the dependency
dependencies {
compile 'com.github.ALguojian:AppUpdate:1.1.0'
}
4.因为使用了广播和适配7.0,所以清单文件需要配置如下
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/download_file_path" />
</provider>
<receiver android:name="com.appupdate.alguojian.appupdate.UpdateAppReceiver">
<intent-filter>
<action android:name="appUpdate" />
</intent-filter>
</receiver>
download_file_path配置的信息是:只需要吧第一个地址改为你的包名即可
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path path="Android/data/com.alguojian.appupdate/" name="files_root" />
<external-path path="." name="external_storage_root" />
</paths>
- 使用方式如下,考虑到强制更新弹窗的不同,可以自行设置,下载进度已经回调,下载完成会自动打开安装页面,下载出错也会直接回调进度下载进度100%,请自行处理
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(v -> {
AppUpdate.into(this)
//设置下载地址,不支持中文
.setUpdatePath("http://issuecdn.baidupcs.com/issue/netdisk/apk
/BaiduNetdisk_7.15.1.apk")
//设置通知栏通知的图标
.setNotificationIcon(R.mipmap.ic_launcher)
//设置版本名字
.setVersionName("1.3.0")
//设置版本更新内容
.setUpdateInfo("我们更新了")
//设置更新是的回调,带有下载进度
.setOnUpdateClick(new UpDateCallback() {
@Override
public void cancel() {
showToast("点击了取消下载");
}
@Override
public void success() {
showToast("连接的是wifi,并且点击了确定下载");
}
@Override
public void downloadProgress(int progress) {
showToast("下载进度是:::" + progress);
}
})
//设置弹窗提示没有连接wifi,是否继续下载的回调
.setOnUpdateNoWifiClick(new ClickCallback() {
@Override
public void cancel() {
showToast("没有连接wifi,并且点击了取消按钮");
}
@Override
public void success() {
showToast("没有连接wifi,并且点击了确定按钮");
}
})
//开始下载
.startUpdate();
});
}
public void showToast(String string) {
Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
}
}