Merge branch 'refs/heads/master' into v681小游戏
# Conflicts: # live/src/main/java/com/yunbao/live/activity/SystemMessageActivity.java # main/src/main/java/com/yunbao/main/activity/MainActivity.java
This commit is contained in:
commit
3d4ad99c99
@ -97,11 +97,12 @@ android {
|
|||||||
String variantName = variant.name.capitalize()
|
String variantName = variant.name.capitalize()
|
||||||
def processManifestTask = project.tasks.getByName("process${variantName}Manifest")
|
def processManifestTask = project.tasks.getByName("process${variantName}Manifest")
|
||||||
processManifestTask.doLast { pm ->
|
processManifestTask.doLast { pm ->
|
||||||
String manifestPath = "build/intermediates/bundle_manifest/google_onlineRelease/bundle-manifest/AndroidManifest.xml"
|
// String manifestPath = "build/intermediates/bundle_manifest/google_onlineRelease/bundle-manifest/AndroidManifest.xml"
|
||||||
|
String manifestPath = "build/intermediates/merged_manifests/google_onlineRelease/processGoogle_onlineReleaseManifest/AndroidManifest.xml"
|
||||||
def isGooglePlay = variant.name.contains("google")
|
def isGooglePlay = variant.name.contains("google")
|
||||||
println "谷歌版本:" + isGooglePlay
|
println "谷歌版本:" + isGooglePlay
|
||||||
println "文件存在" + file(manifestPath).exists()
|
println "文件存在" + file(manifestPath).exists()
|
||||||
println "" + (isGooglePlay != 0)
|
println "" + (isGooglePlay == 1)
|
||||||
println "" + (file(manifestPath).exists() && isGooglePlay)
|
println "" + (file(manifestPath).exists() && isGooglePlay)
|
||||||
if (file(manifestPath).exists() && isGooglePlay) {
|
if (file(manifestPath).exists() && isGooglePlay) {
|
||||||
def manifestContent = file(manifestPath).getText()
|
def manifestContent = file(manifestPath).getText()
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||||
|
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.CALL_PHONE"
|
android:name="android.permission.CALL_PHONE"
|
||||||
|
@ -64,7 +64,9 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name="com.yunbao.common.activity.PreviewVideoActivity"
|
android:name="com.yunbao.common.activity.PreviewVideoActivity"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
|
<service android:name="com.yunbao.common.server.DownloadService"
|
||||||
|
|
||||||
|
/>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -542,6 +542,13 @@ public class LiveHttpUtil {
|
|||||||
HttpClient.getInstance().get("Live.getGiftListApp", LiveHttpConsts.GET_GIFT_LIST)
|
HttpClient.getInstance().get("Live.getGiftListApp", LiveHttpConsts.GET_GIFT_LIST)
|
||||||
.execute(callback);
|
.execute(callback);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 获取礼物列表,同时会返回剩余的钱(新版) -用于获取联系方式时的礼物设置
|
||||||
|
*/
|
||||||
|
public static void getHotGiftList(HttpCallback callback) {
|
||||||
|
HttpClient.getInstance().get("Gift.getHotGiftList", LiveHttpConsts.GET_GIFT_LIST)
|
||||||
|
.execute(callback);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取包裹列表
|
* 获取包裹列表
|
||||||
|
@ -0,0 +1,282 @@
|
|||||||
|
package com.yunbao.common.server;
|
||||||
|
|
||||||
|
import android.app.NotificationChannel;
|
||||||
|
import android.app.NotificationManager;
|
||||||
|
import android.app.PendingIntent;
|
||||||
|
import android.app.Service;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Binder;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.IBinder;
|
||||||
|
import android.os.Looper;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.core.app.NotificationCompat;
|
||||||
|
import androidx.core.content.FileProvider;
|
||||||
|
|
||||||
|
import com.blankj.utilcode.util.LogUtils;
|
||||||
|
import com.yunbao.common.R;
|
||||||
|
import com.yunbao.common.utils.APKDownloadUtil;
|
||||||
|
import com.yunbao.common.utils.AppManager;
|
||||||
|
import com.yunbao.common.utils.SpUtil;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.RandomAccessFile;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import okhttp3.Call;
|
||||||
|
import okhttp3.Callback;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
|
import okhttp3.Request;
|
||||||
|
import okhttp3.Response;
|
||||||
|
|
||||||
|
public class DownloadService extends Service {
|
||||||
|
public static final String DOWNLOAD_TAG = "downloadProgress";
|
||||||
|
public static final String DOWNLOAD_TOTAL = "downloadTotal";
|
||||||
|
private Context mContext;
|
||||||
|
private int progress;
|
||||||
|
private boolean isDownload = false;
|
||||||
|
private boolean isDownloading;
|
||||||
|
private boolean isForceInstall;
|
||||||
|
|
||||||
|
ServiceBinder binder = new ServiceBinder();
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public IBinder onBind(Intent intent) {
|
||||||
|
return binder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate() {
|
||||||
|
super.onCreate();
|
||||||
|
mContext = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ServiceBinder extends Binder {
|
||||||
|
public void startDownload(String url, boolean isForceInstall, APKDownloadUtil.OnUpdateListener listener) {
|
||||||
|
if (isDownloading) return;
|
||||||
|
DownloadService.this.isForceInstall = isForceInstall;
|
||||||
|
downloadAPK(DownloadService.this, url, listener, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void install() {
|
||||||
|
LogUtils.e("文件大小:" + downloadFile.length(), "总大小:" + SpUtil.getLongValue(DOWNLOAD_TAG));
|
||||||
|
if (SpUtil.getLongValue(DOWNLOAD_TAG) == -1 && downloadFile.exists()) {
|
||||||
|
installApk(mContext, downloadFile, mContext.getPackageName() + ".fileprovider");
|
||||||
|
if (!isForceInstall) {
|
||||||
|
isDownload = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDownloadOK() {
|
||||||
|
if (downloadFile == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (SpUtil.getLongValue(DOWNLOAD_TAG) == -1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return downloadFile.exists() && checkApk();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
File downloadFile;
|
||||||
|
|
||||||
|
public void downloadAPK(Context context, final String url, APKDownloadUtil.OnUpdateListener listener, final int replay) {
|
||||||
|
if (replay <= 0) {
|
||||||
|
listener.updateFailure(-2, "DownloadError");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
downloadFile = new File(context.getCacheDir(), "update_app.apk");
|
||||||
|
if (SpUtil.getLongValue(DOWNLOAD_TAG) == -1 && checkApk()) {
|
||||||
|
installApk(mContext, downloadFile, mContext.getPackageName() + ".fileprovider");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
isDownloading = true;
|
||||||
|
Request.Builder builder = new Request.Builder().url(url).addHeader("Accept-Encoding", "identity");
|
||||||
|
if (SpUtil.getLongValue(DOWNLOAD_TAG) > 0) {
|
||||||
|
builder.addHeader("Range", "bytes=" + SpUtil.getLongValue(DOWNLOAD_TAG) + "-");
|
||||||
|
}
|
||||||
|
Request request = builder.build();
|
||||||
|
LogUtils.e("保存路径:" + downloadFile.getAbsolutePath());
|
||||||
|
try {
|
||||||
|
if (!downloadFile.exists() && !downloadFile.createNewFile()) {
|
||||||
|
isDownload = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
createNotification();
|
||||||
|
new OkHttpClient().newCall(request).enqueue(new Callback() {
|
||||||
|
private Handler handler = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call call, IOException e) {
|
||||||
|
// 下载失败
|
||||||
|
handler.post(() -> {
|
||||||
|
listener.updateFailure(-1, e.getMessage());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call call, Response response) {
|
||||||
|
Looper.prepare();
|
||||||
|
byte[] buf = new byte[2048];
|
||||||
|
int len;
|
||||||
|
|
||||||
|
long downloadProgress = SpUtil.getLongValue(DOWNLOAD_TAG);
|
||||||
|
long total = response.body().contentLength();
|
||||||
|
try (InputStream inputStream = response.body().byteStream(); RandomAccessFile outputStream = new RandomAccessFile(downloadFile, "rw")) {
|
||||||
|
long sum = 0;
|
||||||
|
if (downloadProgress > 0) {
|
||||||
|
LogUtils.e("断点续传:" + downloadProgress);
|
||||||
|
}
|
||||||
|
if (downloadProgress > 0) {
|
||||||
|
sum = downloadProgress;
|
||||||
|
outputStream.seek(downloadProgress);
|
||||||
|
total = downloadProgress + total + 2048;
|
||||||
|
} else {
|
||||||
|
outputStream.setLength(total);
|
||||||
|
SpUtil.setLongValue(DOWNLOAD_TOTAL, total);
|
||||||
|
}
|
||||||
|
int tmp = 0;
|
||||||
|
while ((len = inputStream.read(buf)) != -1) {
|
||||||
|
outputStream.write(buf, 0, len);
|
||||||
|
SpUtil.setLongValue(DOWNLOAD_TAG, outputStream.getFilePointer());
|
||||||
|
sum += len;
|
||||||
|
progress = (int) (sum * 1.0f / total * 100);
|
||||||
|
if (tmp != progress) {
|
||||||
|
tmp = progress;
|
||||||
|
updateNotification(progress, 100);
|
||||||
|
}
|
||||||
|
listener.onProgress(progress);
|
||||||
|
}
|
||||||
|
progress = 100;
|
||||||
|
outputStream.close();
|
||||||
|
inputStream.close();
|
||||||
|
SpUtil.setLongValue(DOWNLOAD_TAG, -1);
|
||||||
|
//启动安装app
|
||||||
|
LogUtils.e("开始下载:" + "下载完成", "文件路径:" + downloadFile.getAbsolutePath(), "文件是否存在:" + downloadFile.exists(), "已下载大小:" + sum, "文件大小:" + total);
|
||||||
|
isDownload = true;
|
||||||
|
updateNotification(progress, 100);
|
||||||
|
listener.onProgress(progress);
|
||||||
|
installApk(context, downloadFile, context.getPackageName() + ".fileprovider");
|
||||||
|
isDownloading = false;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
LogUtils.e("下载失败:" + e.getMessage(), "重试次数:" + replay);
|
||||||
|
downloadAPK(mContext, url, listener, replay - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkApk() {
|
||||||
|
long apkTotal = SpUtil.getLongValue(DOWNLOAD_TOTAL);
|
||||||
|
if (apkTotal == 0) return false;
|
||||||
|
if (downloadFile == null || !downloadFile.exists()) return false;
|
||||||
|
try {
|
||||||
|
PackageManager pm = mContext.getPackageManager();
|
||||||
|
PackageInfo info = pm.getPackageArchiveInfo(downloadFile.getAbsolutePath(), PackageManager.GET_ACTIVITIES);
|
||||||
|
if (info == null) return false;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
LogUtils.e("文件大小:" + downloadFile.length(), "已下载大小:" + apkTotal);
|
||||||
|
return apkTotal == downloadFile.length();
|
||||||
|
}
|
||||||
|
|
||||||
|
private NotificationChannel channel;
|
||||||
|
NotificationCompat.Builder builder;
|
||||||
|
|
||||||
|
private void createNotification() {
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
||||||
|
Intent intent = new Intent(this, AppManager.getInstance().getMainActivity().getClass());
|
||||||
|
intent.putExtra("updateApk", true);
|
||||||
|
|
||||||
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
PendingIntent pendingIntent;
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
|
||||||
|
pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
|
||||||
|
} else {
|
||||||
|
pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
channel = new NotificationChannel("Download_channel", "pd_download", NotificationManager.IMPORTANCE_HIGH);
|
||||||
|
NotificationManager manager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
|
manager.createNotificationChannel(channel);
|
||||||
|
builder = new NotificationCompat.Builder(mContext, "Download_channel")
|
||||||
|
.setChannelId(channel.getId())
|
||||||
|
.setSmallIcon(R.mipmap.ic_launcher)
|
||||||
|
.setContentTitle(WordUtil.isNewZh() ? "正在下载" : "Downloading")
|
||||||
|
.setContentText(WordUtil.isNewZh() ? "下载中" : "Downloading")
|
||||||
|
.setProgress(100, 0, true)
|
||||||
|
.setOnlyAlertOnce(true)
|
||||||
|
.setContentIntent(pendingIntent)
|
||||||
|
.setPriority(NotificationCompat.PRIORITY_MAX);
|
||||||
|
manager.notify(114514, builder.build());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateNotification(int downloadProgress, int total) {
|
||||||
|
if (channel != null && builder != null) {
|
||||||
|
builder.setProgress(total, downloadProgress, false);
|
||||||
|
if (downloadProgress != total) {
|
||||||
|
builder.setContentText(String.format(Locale.getDefault(), "(%d/%d)", downloadProgress, total));
|
||||||
|
} else {
|
||||||
|
builder.setContentText(WordUtil.isNewZh() ? "完成" : "Over");
|
||||||
|
}
|
||||||
|
NotificationManager manager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
|
manager.notify(114514, builder.build());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 安装apk
|
||||||
|
*
|
||||||
|
* @param context
|
||||||
|
* @param file
|
||||||
|
*/
|
||||||
|
public void installApk(Context context, File file, String authority) {
|
||||||
|
if (!checkApk()) return;
|
||||||
|
Intent intent = getInstallIntent(context, file, authority);
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取安装Intent
|
||||||
|
*
|
||||||
|
* @param context
|
||||||
|
* @param file
|
||||||
|
* @param authority
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Intent getInstallIntent(Context context, File file, String authority) {
|
||||||
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
intent.addCategory(Intent.CATEGORY_DEFAULT);
|
||||||
|
Uri uriData;
|
||||||
|
String type = "application/vnd.android.package-archive";
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
uriData = FileProvider.getUriForFile(context, authority, file);
|
||||||
|
} else {
|
||||||
|
uriData = Uri.fromFile(file);
|
||||||
|
}
|
||||||
|
intent.setDataAndType(uriData, type);
|
||||||
|
return intent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -104,6 +104,7 @@ public class APKDownloadUtil {
|
|||||||
*/
|
*/
|
||||||
public interface OnUpdateListener {
|
public interface OnUpdateListener {
|
||||||
void updateFailure(int code, String error);
|
void updateFailure(int code, String error);
|
||||||
|
void onProgress(int progress);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// /**
|
// /**
|
||||||
|
@ -9,7 +9,6 @@ import com.google.gson.Gson;
|
|||||||
import com.yunbao.common.CommonAppContext;
|
import com.yunbao.common.CommonAppContext;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -164,7 +163,14 @@ public class SpUtil {
|
|||||||
editor.putBoolean(key, value);
|
editor.putBoolean(key, value);
|
||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
public static void setLongValue(String key, long value) {
|
||||||
|
SharedPreferences.Editor editor=mSharedPreferences.edit();
|
||||||
|
editor.putLong(key, value);
|
||||||
|
editor.apply();
|
||||||
|
}
|
||||||
|
public static long getLongValue(String key) {
|
||||||
|
return mSharedPreferences.getLong(key,0);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 获取一个布尔值
|
* 获取一个布尔值
|
||||||
*/
|
*/
|
||||||
|
@ -119,6 +119,11 @@ public class VersionUtil {
|
|||||||
public void updateFailure(int code, String error) {
|
public void updateFailure(int code, String error) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProgress(int progress) {
|
||||||
|
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -147,6 +152,11 @@ public class VersionUtil {
|
|||||||
public void updateFailure(int code, String error) {
|
public void updateFailure(int code, String error) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProgress(int progress) {
|
||||||
|
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -1,41 +1,31 @@
|
|||||||
package com.yunbao.common.views;
|
package com.yunbao.common.views;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.ServiceConnection;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.IBinder;
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.Looper;
|
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.core.content.FileProvider;
|
|
||||||
|
|
||||||
import com.alibaba.android.arouter.utils.TextUtils;
|
import com.alibaba.android.arouter.utils.TextUtils;
|
||||||
import com.lxj.xpopup.core.CenterPopupView;
|
import com.lxj.xpopup.core.CenterPopupView;
|
||||||
import com.yunbao.common.CommonAppConfig;
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.R;
|
import com.yunbao.common.R;
|
||||||
import com.yunbao.common.manager.APKManager;
|
import com.yunbao.common.manager.APKManager;
|
||||||
|
import com.yunbao.common.server.DownloadService;
|
||||||
import com.yunbao.common.utils.APKDownloadUtil;
|
import com.yunbao.common.utils.APKDownloadUtil;
|
||||||
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
import okhttp3.Call;
|
|
||||||
import okhttp3.Callback;
|
|
||||||
import okhttp3.OkHttpClient;
|
|
||||||
import okhttp3.Request;
|
|
||||||
import okhttp3.Response;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* apk更新弹窗
|
* apk更新弹窗
|
||||||
*/
|
*/
|
||||||
@ -45,8 +35,10 @@ public class APKUpdateCustomPopup extends CenterPopupView {
|
|||||||
private ProgressBar progressBar;
|
private ProgressBar progressBar;
|
||||||
private Activity mContext;
|
private Activity mContext;
|
||||||
private boolean mInside;
|
private boolean mInside;
|
||||||
|
private boolean isForceInstall;
|
||||||
private DialogInterface.OnDismissListener onDismissListener;
|
private DialogInterface.OnDismissListener onDismissListener;
|
||||||
|
|
||||||
|
|
||||||
public APKUpdateCustomPopup(@NonNull Activity context, boolean inside) {
|
public APKUpdateCustomPopup(@NonNull Activity context, boolean inside) {
|
||||||
super(context);
|
super(context);
|
||||||
mContext = context;
|
mContext = context;
|
||||||
@ -64,6 +56,11 @@ public class APKUpdateCustomPopup extends CenterPopupView {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public APKUpdateCustomPopup setForceInstall(boolean forceInstall) {
|
||||||
|
isForceInstall = forceInstall;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
// 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑
|
// 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate() {
|
protected void onCreate() {
|
||||||
@ -140,12 +137,13 @@ public class APKUpdateCustomPopup extends CenterPopupView {
|
|||||||
} else {
|
} else {
|
||||||
versionImmediateUse.setVisibility(GONE);
|
versionImmediateUse.setVisibility(GONE);
|
||||||
updateLine.setVisibility(VISIBLE);
|
updateLine.setVisibility(VISIBLE);
|
||||||
downloadAPK(mContext, APKManager.get().getAPKUrl(), new APKDownloadUtil.OnUpdateListener() {
|
/* downloadAPK(mContext, APKManager.get().getAPKUrl(), new APKDownloadUtil.OnUpdateListener() {
|
||||||
@Override
|
@Override
|
||||||
public void updateFailure(int code, String error) {
|
public void updateFailure(int code, String error) {
|
||||||
ToastUtil.show(error);
|
ToastUtil.show(error);
|
||||||
}
|
}
|
||||||
});
|
});*/
|
||||||
|
startServer(mContext, APKManager.get().getAPKUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -199,96 +197,66 @@ public class APKUpdateCustomPopup extends CenterPopupView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DownloadService.ServiceBinder binder = null;
|
||||||
|
ServiceConnection connection = null;
|
||||||
|
|
||||||
public void downloadAPK(Activity context, String url, APKDownloadUtil.OnUpdateListener listener) {
|
private void connection(String url) {
|
||||||
Request request = new Request.Builder().url(url).addHeader("Accept-Encoding", "identity").build();
|
connection = new ServiceConnection() {
|
||||||
File downloadFile = new File(context.getCacheDir(), "update_app.apk");
|
|
||||||
try {
|
|
||||||
if (!downloadFile.exists() && !downloadFile.createNewFile()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
new OkHttpClient().newCall(request).enqueue(new Callback() {
|
|
||||||
private Handler handler = new Handler();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call call, IOException e) {
|
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||||
// 下载失败
|
binder = (DownloadService.ServiceBinder) service;
|
||||||
handler.post(() -> {
|
if (!StringUtil.isEmpty(url)) {
|
||||||
listener.updateFailure(-1, e.getMessage());
|
if ("install".equals(url)) {
|
||||||
dismiss();
|
install();
|
||||||
});
|
} else {
|
||||||
}
|
startServer(mContext, url);
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResponse(Call call, Response response) {
|
|
||||||
Looper.prepare();
|
|
||||||
byte[] buf = new byte[2048];
|
|
||||||
int len;
|
|
||||||
try (InputStream inputStream = response.body().byteStream(); FileOutputStream outputStream = new FileOutputStream(downloadFile)) {
|
|
||||||
long total = response.body().contentLength();
|
|
||||||
long sum = 0;
|
|
||||||
while ((len = inputStream.read(buf)) != -1) {
|
|
||||||
outputStream.write(buf, 0, len);
|
|
||||||
sum += len;
|
|
||||||
int progress = (int) (sum * 1.0f / total * 100);
|
|
||||||
// 下载中
|
|
||||||
handler.post(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
progressBar.setProgress(progress);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
outputStream.flush();
|
}
|
||||||
//启动安装app
|
}
|
||||||
installApk(context, downloadFile, context.getPackageName() + ".fileprovider");
|
|
||||||
|
@Override
|
||||||
|
public void onServiceDisconnected(ComponentName name) {
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
mContext.bindService(new Intent(mContext, DownloadService.class), connection, Context.BIND_AUTO_CREATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void install() {
|
||||||
|
if (binder == null) {
|
||||||
|
connection("install");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
binder.install();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startServer(Context mContext, String url) {
|
||||||
|
if (binder == null) {
|
||||||
|
connection(url);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
binder.startDownload(url, isForceInstall, new APKDownloadUtil.OnUpdateListener() {
|
||||||
|
@Override
|
||||||
|
public void updateFailure(int code, String error) {
|
||||||
|
handler.post(() -> ToastUtil.show(error));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProgress(int progress) {
|
||||||
|
progressBar.setProgress(progress);
|
||||||
|
if (progress == 100) {
|
||||||
handler.post(() -> dismiss());
|
handler.post(() -> dismiss());
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
new Handler().post(() -> {
|
|
||||||
listener.updateFailure(-1, e.getMessage());
|
|
||||||
dismiss();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* 安装apk
|
public void onDestroy() {
|
||||||
*
|
super.onDestroy();
|
||||||
* @param context
|
if (connection != null) {
|
||||||
* @param file
|
mContext.unbindService(connection);
|
||||||
*/
|
|
||||||
public void installApk(Context context, File file, String authority) {
|
|
||||||
Intent intent = getInstallIntent(context, file, authority);
|
|
||||||
context.startActivity(intent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取安装Intent
|
|
||||||
*
|
|
||||||
* @param context
|
|
||||||
* @param file
|
|
||||||
* @param authority
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public Intent getInstallIntent(Context context, File file, String authority) {
|
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
intent.addCategory(Intent.CATEGORY_DEFAULT);
|
|
||||||
Uri uriData;
|
|
||||||
String type = "application/vnd.android.package-archive";
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
|
||||||
uriData = FileProvider.getUriForFile(context, authority, file);
|
|
||||||
} else {
|
|
||||||
uriData = Uri.fromFile(file);
|
|
||||||
}
|
}
|
||||||
intent.setDataAndType(uriData, type);
|
|
||||||
return intent;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,7 @@ public class SystemMessageActivity extends AbsActivity {
|
|||||||
// }
|
// }
|
||||||
init();
|
init();
|
||||||
punish = findViewById(R.id.tv_sys_msg_punish);
|
punish = findViewById(R.id.tv_sys_msg_punish);
|
||||||
|
punish.setVisibility(View.VISIBLE);
|
||||||
punishNotice = findViewById(R.id.tv_sys_msg_punish_notice);
|
punishNotice = findViewById(R.id.tv_sys_msg_punish_notice);
|
||||||
punish.setOnClickListener(v -> {
|
punish.setOnClickListener(v -> {
|
||||||
RouteUtil.forwardPunishActivity();
|
RouteUtil.forwardPunishActivity();
|
||||||
|
@ -62,7 +62,12 @@ public class GiftPopDialog extends AbsDialogPopupWindow implements ActionListene
|
|||||||
private TextView mTitle;
|
private TextView mTitle;
|
||||||
private boolean isOldGiftList = false;
|
private boolean isOldGiftList = false;
|
||||||
private boolean hideGiftType = false;
|
private boolean hideGiftType = false;
|
||||||
|
private boolean isHotGiftListUrl = false;
|
||||||
|
|
||||||
|
public GiftPopDialog setHotGiftListUrl(boolean hotGiftListUrl) {
|
||||||
|
isHotGiftListUrl = hotGiftListUrl;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public GiftPopDialog(@NonNull Context context) {
|
public GiftPopDialog(@NonNull Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
@ -183,6 +188,25 @@ public class GiftPopDialog extends AbsDialogPopupWindow implements ActionListene
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFinish() {
|
||||||
|
if (mLoading != null) {
|
||||||
|
mLoading.setVisibility(View.INVISIBLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (isHotGiftListUrl) {
|
||||||
|
LiveHttpUtil.getHotGiftList(new HttpCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(int code, String msg, String[] info) {
|
||||||
|
if (code == 0 && info.length > 0) {
|
||||||
|
JSONObject obj = JSON.parseObject(info[0]);
|
||||||
|
JSONArray list = obj.getJSONArray("listarray");
|
||||||
|
setDate(list);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFinish() {
|
public void onFinish() {
|
||||||
if (mLoading != null) {
|
if (mLoading != null) {
|
||||||
|
@ -56,7 +56,8 @@
|
|||||||
android:text="@string/live_end_view_ban_punish_title"
|
android:text="@string/live_end_view_ban_punish_title"
|
||||||
android:textColor="@color/colorWhite"
|
android:textColor="@color/colorWhite"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
android:visibility="visible" />
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_sys_msg_punish_notice"
|
android:id="@+id/tv_sys_msg_punish_notice"
|
||||||
|
@ -2,6 +2,7 @@ package com.yunbao.main.activity;
|
|||||||
|
|
||||||
import static com.yunbao.common.CommonAppContext.isReady;
|
import static com.yunbao.common.CommonAppContext.isReady;
|
||||||
import static com.yunbao.common.manager.imrongcloud.RongcloudIMManager.connectIM;
|
import static com.yunbao.common.manager.imrongcloud.RongcloudIMManager.connectIM;
|
||||||
|
import static com.yunbao.common.server.DownloadService.DOWNLOAD_TAG;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
@ -913,6 +914,8 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
).show();
|
).show();
|
||||||
|
}else{
|
||||||
|
SpUtil.setLongValue(DOWNLOAD_TAG, 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
requestBonus();
|
requestBonus();
|
||||||
@ -927,9 +930,9 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
}
|
}
|
||||||
|
|
||||||
DownloadService.ServiceBinder binder = null;
|
DownloadService.ServiceBinder binder = null;
|
||||||
|
ServiceConnection connection=null;
|
||||||
private void connectionInstallApkService() {
|
private void connectionInstallApkService() {
|
||||||
ServiceConnection connection = new ServiceConnection() {
|
connection = new ServiceConnection() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||||
@ -1170,6 +1173,9 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
|
|||||||
LiveStorge.getInstance().clear();
|
LiveStorge.getInstance().clear();
|
||||||
VideoStorge.getInstance().clear();
|
VideoStorge.getInstance().clear();
|
||||||
floatBanner.release();
|
floatBanner.release();
|
||||||
|
if(connection!=null){
|
||||||
|
mContext.unbindService(connection);
|
||||||
|
}
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user