This commit is contained in:
chenjuntao
2018-10-28 14:14:56 +08:00
parent 74c9cfc5b6
commit 26bc1299ff
5 changed files with 45 additions and 15 deletions

View File

@ -354,14 +354,15 @@ public class DialogUtils {
}
public static void checkDownload(Context context, String size, CheckDownloadCallBack callBack) {
if (NetworkUtils.isWifiConnected(context) || filter4GorSize(context, size)) {
if (!NetworkUtils.isNetworkConnected(context)) {
showNoConnectionDownloadDialog(context, null,
() -> callBack.onResponse(true));
} else if (NetworkUtils.isWifiConnected(context) || filter4GorSize(context, size)) {
callBack.onResponse(false);
} else {
showDownloadDialog(context, () -> {
callBack.onResponse(false);
}, () -> {
callBack.onResponse(true);
});
showDownloadDialog(context,
() -> callBack.onResponse(false),
() -> callBack.onResponse(true));
}
}
@ -394,6 +395,9 @@ public class DialogUtils {
}
}
public static void showNoConnectionDownloadDialog(Context context, ConfirmListener listener, CancelListener cancelListener) {
showWarningDialog(context, "下载提示", "网络异常,请检查手机网络状态", "连上WiFi后自动下载", "关闭", listener, cancelListener);
}
public static void showDownloadDialog(Context context, ConfirmListener listener, CancelListener cancelListener) {
showWarningDialog(context, "下载提示", "当前正在使用移动网络,立即下载会消耗手机流量", "连上WiFi后自动下载", "立即下载", listener, cancelListener);

View File

@ -1,10 +1,12 @@
package com.gh.download;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
import com.gh.common.util.AppDebugConfig;
@ -28,8 +30,9 @@ public class DownloadNotification {
public static final String ACTION_INSTALL = "com.gh.gamecenter.INSTALL";
public static final String ACTION_DOWNLOAD = "com.gh.gamecenter.DOWNLOAD";
public static final int ICON = R.drawable.logo;
private static final int NOTIFY_ID = 0x123;
private static final int WAIT_NOTIFY_ID = 0x124;
public static final int NOTIFY_ID = 0x123;
public static final int WAIT_NOTIFY_ID = 0x124;
private static final String CHANNEL_ID = "Halo_Download";
private static NotificationManager getNotificationManager(Context context) {
return (NotificationManager) context.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
@ -38,6 +41,12 @@ public class DownloadNotification {
//TODO 下载重构
public static void showDownloadDoneNotification(Context context, DownloadEntity downloadEntity) {
final NotificationManager manager = getNotificationManager(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_ID, NotificationManager.IMPORTANCE_LOW);
manager.createNotificationChannel(channel);
}
Intent intent = new Intent();
intent.putExtra(EntranceUtils.KEY_PATH, downloadEntity.getPath());
intent.setAction(ACTION_INSTALL);
@ -58,7 +67,8 @@ public class DownloadNotification {
}
title = "下载完成,点击立即安装";
}
final Notification notification = new NotificationCompat.Builder(context)
final Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.logo)
.setTicker(title)
.setContentTitle(text)
@ -85,7 +95,11 @@ public class DownloadNotification {
downloadingSize++;
}
}
NotificationManager nManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationManager nManager = getNotificationManager(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_ID, NotificationManager.IMPORTANCE_LOW);
nManager.createNotificationChannel(channel);
}
if (downloadingSize == 0) {
nManager.cancel(NOTIFY_ID);
} else {
@ -93,7 +107,7 @@ public class DownloadNotification {
intent.setAction(ACTION_DOWNLOAD);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, NOTIFY_ID,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(context)
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(ICON)
.setTicker("点击查看")
.setContentTitle("正在下载" + downloadingSize + "个游戏")
@ -110,12 +124,16 @@ public class DownloadNotification {
AppDebugConfig.logMethodWithParams(DownloadNotification.class, context);
}
NotificationManager nManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationManager nManager = getNotificationManager(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_ID, NotificationManager.IMPORTANCE_LOW);
nManager.createNotificationChannel(channel);
}
Intent intent = new Intent();
intent.setAction(ACTION_DOWNLOAD);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, NOTIFY_ID,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(context)
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(ICON)
.setTicker("连接WiFi后自动恢复下载")
.setContentTitle("下载已暂停")

View File

@ -1081,6 +1081,7 @@ public class MainActivity extends BaseActivity {
if (sp.getBoolean("concerngame", true)) { //设置页面控制是否安装后自动关注
// 安装后关注游戏
DownloadEntity finalDownloadEntity = mDownloadEntity;
RetrofitManager.getInstance(this).getApi().getGameDigestByPackageName(UrlFilterUtils.getFilterQuery("package", packageName))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -1091,7 +1092,7 @@ public class MainActivity extends BaseActivity {
concernGame(gameDigestEntity.getId(), packageName);
if (!TextUtils.isEmpty(gameDigestEntity.getId())) { // 关注游戏
if (gameInfo == null || gameInfo.getId().equals(gameDigestEntity.getId())) {
if (finalDownloadEntity != null && gameDigestEntity.getId().equals(finalDownloadEntity.getGameId())) {
ConcernUtils.INSTANCE.postConcernGameId(MainActivity.this, gameDigestEntity.getId(), null);
}
}

View File

@ -521,7 +521,6 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter<ViewHolder> {
return size + unit;
}
// 添加下载
private void addUpdateDownload(int position, boolean isSubscribe) {
GameUpdateEntity updateEntity = updateList.get(position);
@ -577,6 +576,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter<ViewHolder> {
notifyItemChanged(0);
EventBus.getDefault().post(new EBSkip(DownloadManagerActivity.TAG, DownloadManagerActivity.INDEX_UPDATE));
}
// 添加下载
public List<GameUpdateEntity> getUpdateList() {
return updateList;

View File

@ -1,5 +1,6 @@
package com.gh.gamecenter.receiver;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@ -7,6 +8,7 @@ import android.content.Intent;
import com.gh.common.exposure.meta.MetaUtil;
import com.gh.common.util.CommunityHelper;
import com.gh.common.util.NetworkUtils;
import com.gh.download.DownloadNotification;
import com.gh.gamecenter.eventbus.EBNetworkState;
import org.greenrobot.eventbus.EventBus;
@ -22,6 +24,11 @@ public class NetworkStateReceiver extends BroadcastReceiver {
// 初始化开启的社区列表
if (NetworkUtils.isNetworkConnected(context)) {
CommunityHelper.getAvailableCommunityList();
NotificationManager manager = (NotificationManager) context.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (manager != null) {
manager.cancel(DownloadNotification.WAIT_NOTIFY_ID);
}
}
}