You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppUpdater/app-updater/src/main/java/com/king/app/updater/UpdateConfig.java

351 lines
8.4 KiB

package com.king.app.updater;
import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.DrawableRes;
import com.king.app.updater.constant.Constants;
import java.util.HashMap;
import java.util.Map;
/**
* @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a>
*/
public class UpdateConfig implements Parcelable {
private String mUrl;
/**
* 保存路径
*/
private String mPath;
/**
* 保存文件名
*/
private String mFilename;
/**
* 是否显示通知栏
*/
private boolean isShowNotification = true;
/**
* 下载完成后是否自动弹出安装
*/
private boolean isInstallApk = true;
/**
* 通知栏图标:默认取app图标
*/
private int mNotificationIcon;
/**
* 通知栏ID
*/
private int mNotificationId = Constants.DEFAULT_NOTIFICATION_ID;
/**
* 通知栏渠道ID
*/
private String mChannelId;
/**
* 通知栏渠道名称
*/
private String mChannelName;
/**
* 默认{@link Context#getPackageName() + ".fileProvider"}
*/
private String mAuthority;
/**
* 下载失败是否支持点击通知栏重新下载
*/
private boolean isReDownload = true;
/**
* 下载失败后,最大重新下载次数
*/
private int reDownloads = 3;
/**
* 是否显示百分比
*/
private boolean isShowPercentage = true;
/**
* 是否震动提示,为true时使用通知默认震动
*/
private boolean isVibrate;
/**
* 是否铃声提示,为true时使用通知默认铃声
*/
private boolean isSound;
/**
* 要下载的APK的versionCode
*/
private Integer versionCode;
/**
* 请求头参数
*/
private Map<String,String> mRequestProperty;
/**
* 是否删除取消下载的文件
*/
private boolean isDeleteCancelFile = true;
/**
* APK文件的MD5
*/
private String apkMD5;
public UpdateConfig() {
}
public String getUrl() {
return mUrl;
}
public void setUrl(String url) {
this.mUrl = url;
}
public String getPath() {
return mPath;
}
public void setPath(String path) {
this.mPath = path;
}
public String getFilename() {
return mFilename;
}
public void setFilename(String filename) {
this.mFilename = filename;
}
public boolean isShowNotification() {
return isShowNotification;
}
public void setShowNotification(boolean isShowNotification) {
this.isShowNotification = isShowNotification;
}
public String getChannelId() {
return mChannelId;
}
public void setChannelId(String channelId) {
this.mChannelId = channelId;
}
public String getChannelName() {
return mChannelName;
}
public void setChannelName(String channelName) {
this.mChannelName = channelName;
}
public void setNotificationId(int notificationId){
this.mNotificationId = notificationId;
}
public int getNotificationId(){
return this.mNotificationId;
}
public void setNotificationIcon(@DrawableRes int icon){
this.mNotificationIcon = icon;
}
public int getNotificationIcon(){
return this.mNotificationIcon;
}
public boolean isInstallApk() {
return isInstallApk;
}
public void setInstallApk(boolean isInstallApk) {
this.isInstallApk = isInstallApk;
}
public String getAuthority() {
return mAuthority;
}
public void setAuthority(String authority) {
this.mAuthority = authority;
}
public boolean isShowPercentage() {
return isShowPercentage;
}
public void setShowPercentage(boolean showPercentage) {
isShowPercentage = showPercentage;
}
public boolean isReDownload() {
return isReDownload;
}
public void setReDownload(boolean reDownload) {
isReDownload = reDownload;
}
public int getReDownloads() {
return reDownloads;
}
public void setReDownloads(int reDownloads) {
this.reDownloads = reDownloads;
}
public boolean isVibrate() {
return isVibrate;
}
public void setVibrate(boolean vibrate) {
isVibrate = vibrate;
}
public boolean isSound() {
return isSound;
}
public void setSound(boolean sound) {
isSound = sound;
}
public Integer getVersionCode(){
return versionCode;
}
public void setVersionCode(Integer versionCode){
this.versionCode = versionCode;
}
public Map<String, String> getRequestProperty() {
return mRequestProperty;
}
public void setApkMD5(String md5){
this.apkMD5 = md5;
}
public String getApkMD5(){
return apkMD5;
}
public void addHeader(String key, String value){
initRequestProperty();
mRequestProperty.put(key,value);
}
public void addHeader(Map<String,String> headers){
initRequestProperty();
mRequestProperty.putAll(headers);
}
private void initRequestProperty(){
if(mRequestProperty == null){
mRequestProperty = new HashMap<>();
}
}
public boolean isDeleteCancelFile() {
return isDeleteCancelFile;
}
public void setDeleteCancelFile(boolean deleteCancelFile) {
isDeleteCancelFile = deleteCancelFile;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.mUrl);
dest.writeString(this.mPath);
dest.writeString(this.mFilename);
dest.writeByte(this.isShowNotification ? (byte) 1 : (byte) 0);
dest.writeByte(this.isInstallApk ? (byte) 1 : (byte) 0);
dest.writeInt(this.mNotificationIcon);
dest.writeInt(this.mNotificationId);
dest.writeString(this.mChannelId);
dest.writeString(this.mChannelName);
dest.writeString(this.mAuthority);
dest.writeByte(this.isReDownload ? (byte) 1 : (byte) 0);
dest.writeInt(this.reDownloads);
dest.writeByte(this.isShowPercentage ? (byte) 1 : (byte) 0);
dest.writeByte(this.isVibrate ? (byte) 1 : (byte) 0);
dest.writeByte(this.isSound ? (byte) 1 : (byte) 0);
dest.writeValue(this.versionCode);
if(mRequestProperty!=null){
dest.writeInt(this.mRequestProperty.size());
for (Map.Entry<String, String> entry : this.mRequestProperty.entrySet()) {
dest.writeString(entry.getKey());
dest.writeString(entry.getValue());
}
}else{
dest.writeInt(0);
}
dest.writeByte(this.isDeleteCancelFile ? (byte) 1 : (byte) 0);
dest.writeString(this.apkMD5);
}
protected UpdateConfig(Parcel in) {
this.mUrl = in.readString();
this.mPath = in.readString();
this.mFilename = in.readString();
this.isShowNotification = in.readByte() != 0;
this.isInstallApk = in.readByte() != 0;
this.mNotificationIcon = in.readInt();
this.mNotificationId = in.readInt();
this.mChannelId = in.readString();
this.mChannelName = in.readString();
this.mAuthority = in.readString();
this.isReDownload = in.readByte() != 0;
this.reDownloads = in.readInt();
this.isShowPercentage = in.readByte() != 0;
this.isVibrate = in.readByte() != 0;
this.isSound = in.readByte() != 0;
this.versionCode = (Integer) in.readValue(Integer.class.getClassLoader());
int mRequestPropertySize = in.readInt();
this.mRequestProperty = new HashMap<>(mRequestPropertySize);
for (int i = 0; i < mRequestPropertySize; i++) {
String key = in.readString();
String value = in.readString();
this.mRequestProperty.put(key, value);
}
this.isDeleteCancelFile = in.readByte() != 0;
this.apkMD5 = in.readString();
}
public static final Creator<UpdateConfig> CREATOR = new Creator<UpdateConfig>() {
@Override
public UpdateConfig createFromParcel(Parcel source) {
return new UpdateConfig(source);
}
@Override
public UpdateConfig[] newArray(int size) {
return new UpdateConfig[size];
}
};
}