添加下载状态通知功能
This commit is contained in:
82
app/src/main/java/com/gh/common/util/NotificationUtils.java
Normal file
82
app/src/main/java/com/gh/common/util/NotificationUtils.java
Normal file
@ -0,0 +1,82 @@
|
||||
package com.gh.common.util;
|
||||
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
|
||||
import com.gh.download.DownloadEntity;
|
||||
import com.gh.download.DownloadManager;
|
||||
import com.gh.download.DownloadStatus;
|
||||
import com.gh.gamecenter.R;
|
||||
|
||||
/**
|
||||
* Created by LGT on 2016/10/10.
|
||||
*/
|
||||
public class NotificationUtils {
|
||||
|
||||
public static void showDownloadDoneNotification(Context context, DownloadEntity downloadEntity, int flag) {
|
||||
NotificationManager nManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra("path", downloadEntity.getPath());
|
||||
intent.setAction("com.gh.gamecenter.INSTALL");
|
||||
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, flag,
|
||||
intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
String text;
|
||||
String title;
|
||||
if (downloadEntity.isPluggable()) {
|
||||
text = "下载完成,点击继续插件化。";
|
||||
title = downloadEntity.getName() + "-"
|
||||
+ PlatformUtils.getInstance(context).getPlatformName(downloadEntity.getPlatform());
|
||||
} else {
|
||||
if (downloadEntity.isPlugin()) {
|
||||
text = downloadEntity.getName() + "-"
|
||||
+ PlatformUtils.getInstance(context).getPlatformName(downloadEntity.getPlatform()) + " 下载完成";
|
||||
} else {
|
||||
text = downloadEntity.getName() + " 下载完成";
|
||||
}
|
||||
title = "点击查看详情";
|
||||
}
|
||||
Notification notification = new NotificationCompat.Builder(context)
|
||||
.setSmallIcon(R.drawable.logo)
|
||||
.setTicker(text)
|
||||
.setContentTitle(title)
|
||||
.setContentText(text)
|
||||
.setContentIntent(pendingIntent).build();
|
||||
notification.defaults = Notification.DEFAULT_SOUND;// 添加系统默认声音
|
||||
notification.flags |= Notification.FLAG_AUTO_CANCEL; // // FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。
|
||||
nManager.notify(flag, notification);
|
||||
}
|
||||
|
||||
public static void showDownloadingNotification(Context context) {
|
||||
int downloadingSize = 0;
|
||||
for (DownloadEntity entity : DownloadManager.getInstance(context).getAll()) {
|
||||
if (entity.getStatus().equals(DownloadStatus.downloading)
|
||||
|| entity.getStatus().equals(DownloadStatus.waiting)) {
|
||||
downloadingSize++;
|
||||
}
|
||||
}
|
||||
if (downloadingSize == 0) {
|
||||
NotificationManager nManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nManager.cancel(0x123);
|
||||
} else {
|
||||
NotificationManager nManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
Intent intent = new Intent();
|
||||
intent.setAction("com.gh.gamecenter.DOWNLOAD");
|
||||
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0x123,
|
||||
intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
Notification notification = new NotificationCompat.Builder(context)
|
||||
.setSmallIcon(R.drawable.logo)
|
||||
.setTicker("你有" + downloadingSize + "个下载正在进行中")
|
||||
.setContentTitle("点击查看详情")
|
||||
.setContentText("你有" + downloadingSize + "个下载正在进行中")
|
||||
.setContentIntent(pendingIntent).build();
|
||||
notification.defaults = Notification.DEFAULT_SOUND;// 添加系统默认声音
|
||||
notification.flags |= Notification.FLAG_NO_CLEAR; // 通知无法手动清除
|
||||
nManager.notify(0x123, notification);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -66,7 +66,6 @@ public class DownloadManager {
|
||||
}
|
||||
}
|
||||
};
|
||||
context.startService(new Intent(context, DownloadService.class));
|
||||
}
|
||||
|
||||
public void put(String url, long time) {
|
||||
|
||||
@ -1,21 +1,30 @@
|
||||
package com.gh.download;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.support.v4.util.ArrayMap;
|
||||
|
||||
import com.gh.common.constant.Constants;
|
||||
import com.gh.common.util.NotificationUtils;
|
||||
import com.gh.common.util.Utils;
|
||||
import com.gh.gamecenter.eventbus.EBDownloadStatus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
public class DownloadService extends Service {
|
||||
|
||||
private int mFlag = (int) System.currentTimeMillis() / 1000;
|
||||
|
||||
private ArrayMap<String, Integer> flagMap = new ArrayMap<>();
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
return null;
|
||||
@ -24,16 +33,29 @@ public class DownloadService extends Service {
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
Utils.log(DownloadService.class.getSimpleName(), "onCreate");
|
||||
NotificationUtils.showDownloadingNotification(this);
|
||||
ArrayList<DownloadEntity> doneList = new ArrayList<>();
|
||||
for (DownloadEntity downloadEntity : DownloadManager.getInstance(this).getAll()) {
|
||||
if (downloadEntity.getStatus().equals(DownloadStatus.done)) {
|
||||
doneList.add(downloadEntity);
|
||||
}
|
||||
}
|
||||
if (doneList.size() != 0) {
|
||||
for (DownloadEntity downloadEntity : doneList) {
|
||||
mFlag++;
|
||||
flagMap.put(downloadEntity.getUrl(), mFlag);
|
||||
NotificationUtils.showDownloadDoneNotification(this, downloadEntity, mFlag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
Utils.log(DownloadService.class.getSimpleName(), "onStartCommand");
|
||||
if (intent != null && intent.getExtras() != null) {
|
||||
DownloadStatus status = DownloadStatus.valueOf(intent
|
||||
.getStringExtra(Constants.KEY_DOWNLOAD_ACTION));
|
||||
DownloadEntity entry = (DownloadEntity) intent
|
||||
.getSerializableExtra(Constants.KEY_DOWNLOAD_ENTRY);
|
||||
DownloadStatus status = DownloadStatus.valueOf(intent.getStringExtra(Constants.KEY_DOWNLOAD_ACTION));
|
||||
DownloadEntity entry = (DownloadEntity) intent.getSerializableExtra(Constants.KEY_DOWNLOAD_ENTRY);
|
||||
switch (status) {
|
||||
case add:
|
||||
addDownload(entry);
|
||||
@ -49,16 +71,13 @@ public class DownloadService extends Service {
|
||||
case cancel:
|
||||
cancelDownload(entry);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return super.onStartCommand(intent, flags, startId);
|
||||
}
|
||||
|
||||
private synchronized void addDownload(DownloadEntity entry) {
|
||||
DownloadEntity downloadEntity = DownloadDao.getInstance(this).get(
|
||||
entry.getUrl());
|
||||
DownloadEntity downloadEntity = DownloadDao.getInstance(this).get(entry.getUrl());
|
||||
// 数据库下载历史中有这个任务的下载记录
|
||||
if (downloadEntity != null) {
|
||||
entry = downloadEntity;
|
||||
@ -79,6 +98,8 @@ public class DownloadService extends Service {
|
||||
}
|
||||
Utils.log(DownloadService.class.getSimpleName(), "addDownload==>" + entry);
|
||||
EventBus.getDefault().post(new EBDownloadStatus("download"));
|
||||
|
||||
NotificationUtils.showDownloadingNotification(this);
|
||||
}
|
||||
|
||||
private synchronized void startDownload(DownloadEntity entry) {
|
||||
@ -103,8 +124,7 @@ public class DownloadService extends Service {
|
||||
|
||||
private synchronized void pauseDownload(DownloadEntity entry) {
|
||||
if (entry != null) {
|
||||
DownloadTask task = DataChanger.getInstance().getDownloadingTasks()
|
||||
.get(entry.getUrl());
|
||||
DownloadTask task = DataChanger.getInstance().getDownloadingTasks().get(entry.getUrl());
|
||||
if (task != null) {
|
||||
// 1.改任务队列的状态
|
||||
entry.setStatus(DownloadStatus.pause);
|
||||
@ -117,6 +137,8 @@ public class DownloadService extends Service {
|
||||
DataChanger.getInstance().notifyDataChanged(entry);
|
||||
}
|
||||
Utils.log(DownloadService.class.getSimpleName(), "pauseDownload==>" + entry);
|
||||
|
||||
NotificationUtils.showDownloadingNotification(this);
|
||||
}
|
||||
|
||||
private synchronized void cancelDownload(DownloadEntity downloadEntity) {
|
||||
@ -137,6 +159,12 @@ public class DownloadService extends Service {
|
||||
downloadEntity.getPlatform(), downloadEntity.getUrl());
|
||||
status.setPluggable(downloadEntity.isPluggable());
|
||||
EventBus.getDefault().post(status);
|
||||
|
||||
Integer flag = flagMap.get(downloadEntity.getUrl());
|
||||
if (flag != null) {
|
||||
NotificationManager nManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nManager.cancel(flag);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("HandlerLeak")
|
||||
@ -150,10 +178,19 @@ public class DownloadService extends Service {
|
||||
case downloading:
|
||||
break;
|
||||
case done:
|
||||
NotificationUtils.showDownloadingNotification(DownloadService.this);
|
||||
mFlag++;
|
||||
flagMap.put(entry.getUrl(), mFlag);
|
||||
NotificationUtils.showDownloadDoneNotification(DownloadService.this, entry, mFlag);
|
||||
removeAndCheckNext(entry);
|
||||
break;
|
||||
case pause:
|
||||
case cancel:
|
||||
removeAndCheckNext(entry);
|
||||
break;
|
||||
case timeout:
|
||||
case neterror:
|
||||
NotificationUtils.showDownloadingNotification(DownloadService.this);
|
||||
removeAndCheckNext(entry);
|
||||
break;
|
||||
default:
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.gh.gamecenter;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
@ -19,7 +20,7 @@ import com.gh.gamecenter.download.GameDownLoadFragment;
|
||||
import com.gh.gamecenter.download.GameUpdateFragment;
|
||||
import com.gh.gamecenter.eventbus.EBDownloadChanged;
|
||||
import com.gh.gamecenter.eventbus.EBMiPush;
|
||||
import com.gh.gamecenter.eventbus.EBPerformClick;
|
||||
import com.gh.gamecenter.eventbus.EBSkip;
|
||||
import com.gh.gamecenter.eventbus.EBUISwitch;
|
||||
import com.gh.gamecenter.manager.PackageManager;
|
||||
|
||||
@ -46,6 +47,8 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements
|
||||
|
||||
private int width;
|
||||
|
||||
private Handler handler = new Handler();
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
@ -238,11 +241,20 @@ public class DownloadManagerActivity extends BaseFragmentActivity implements
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onEventMainThread(EBPerformClick click) {
|
||||
if (click.getFrom().equals("update")) {
|
||||
downloadmanager_ll_download.performClick();
|
||||
|
||||
public void onEventMainThread(EBSkip skip) {
|
||||
if ("DownloadManagerActivity".equals(skip.getType())) {
|
||||
if (skip.getCurrentItem() == 0) {
|
||||
handler.postDelayed(runnable, 300);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
downloadmanager_ll_download.performClick();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@ -1,9 +1,6 @@
|
||||
package com.gh.gamecenter;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
@ -17,7 +14,6 @@ import android.os.SystemClock;
|
||||
import android.provider.Settings;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.text.Html;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
@ -47,7 +43,6 @@ import com.gh.common.util.NetworkUtils;
|
||||
import com.gh.common.util.PackageUtils;
|
||||
import com.gh.common.util.PlatformUtils;
|
||||
import com.gh.common.util.RandomUtils;
|
||||
import com.gh.common.util.RunningUtils;
|
||||
import com.gh.common.util.SpeedUtils;
|
||||
import com.gh.common.util.TokenUtils;
|
||||
import com.gh.common.util.TrafficUtils;
|
||||
@ -154,6 +149,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
return;
|
||||
} else if (DownloadStatus.neterror.equals(downloadEntity.getStatus())
|
||||
|| DownloadStatus.timeout.equals(downloadEntity.getStatus())) {
|
||||
toast("网络不稳定,下载任务已暂停");
|
||||
uploadNeterrorLog(downloadEntity);
|
||||
}
|
||||
if (downloadEntity.getName().contains("光环助手") && isShowDownload) {
|
||||
@ -169,60 +165,32 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
} else {
|
||||
statDoneEvent(downloadEntity);
|
||||
|
||||
if (RunningUtils.isApplicationBroughtToBackground(getApplicationContext())) {
|
||||
// 应用程序在后台,如果是插件化下载,则弹出notification提示用户
|
||||
String platform = PlatformUtils.getInstance(getApplicationContext())
|
||||
.getPlatformName(downloadEntity.getPlatform());
|
||||
if (platform != null) {
|
||||
if (downloadEntity.isPluggable()) {
|
||||
String path = downloadEntity.getPath();
|
||||
String platform = PlatformUtils.getInstance(getApplicationContext())
|
||||
.getPlatformName(downloadEntity.getPlatform());
|
||||
String title = downloadEntity.getName() + " - " + platform;
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra("path", path);
|
||||
intent.setAction("com.gh.gamecenter.UNINSTALL");
|
||||
PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
||||
MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
|
||||
Notification notification = new NotificationCompat.Builder(MainActivity.this)
|
||||
.setSmallIcon(R.drawable.logo)
|
||||
.setTicker(title)
|
||||
.setContentTitle(title)
|
||||
.setContentText("下载完成,点击继续插件化。")
|
||||
.setContentIntent(pendingIntent)
|
||||
.build();
|
||||
notification.defaults = Notification.DEFAULT_SOUND;// 添加系统默认声音
|
||||
notification.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。
|
||||
NotificationManager notificationManager = (NotificationManager) getSystemService(
|
||||
Context.NOTIFICATION_SERVICE);
|
||||
notificationManager.notify(((int) System.currentTimeMillis() / 1000), notification);
|
||||
}
|
||||
} else {
|
||||
String platform = PlatformUtils.getInstance(getApplicationContext())
|
||||
.getPlatformName(downloadEntity.getPlatform());
|
||||
if (platform != null) {
|
||||
if (downloadEntity.isPluggable()) {
|
||||
// 弹出插件化提示框
|
||||
EventBus.getDefault().post(new EBShowDialog("plugin", downloadEntity.getPath()));
|
||||
} else if (platform.equals("官方版")) {
|
||||
toast(downloadEntity.getName() + " - 下载完成");
|
||||
} else {
|
||||
toast(downloadEntity.getName() + " - " + platform + " - 下载完成");
|
||||
}
|
||||
// 弹出插件化提示框
|
||||
EventBus.getDefault().post(new EBShowDialog("plugin", downloadEntity.getPath()));
|
||||
} else if (downloadEntity.isPlugin()) {
|
||||
toast(downloadEntity.getName() + " - " + platform + " - 下载完成");
|
||||
} else {
|
||||
toast(downloadEntity.getName() + " - 下载完成");
|
||||
}
|
||||
if (!downloadEntity.isPluggable()) {
|
||||
// 是否是自动安装
|
||||
if (sp.getBoolean("autoinstall", true)) {
|
||||
if (FileUtils.isEmptyFile(downloadEntity.getPath())) {
|
||||
toast("解析包出错(可能被误删了),请重新下载");
|
||||
DownloadManager.getInstance(MainActivity.this).cancel(downloadEntity.getUrl());
|
||||
} else {
|
||||
toast(downloadEntity.getName() + " - 下载完成");
|
||||
}
|
||||
if (!downloadEntity.isPluggable()) {
|
||||
// 是否是自动安装
|
||||
if (sp.getBoolean("autoinstall", true)) {
|
||||
if (FileUtils.isEmptyFile(downloadEntity.getPath())) {
|
||||
toast("解析包出错(可能被误删了),请重新下载");
|
||||
DownloadManager.getInstance(MainActivity.this).cancel(downloadEntity.getUrl());
|
||||
} else {
|
||||
if (PackageUtils.isCanLaunchSetup(getApplicationContext(), downloadEntity.getPath())) {
|
||||
startActivity(PackageUtils.getInstallIntent(downloadEntity.getPath()));
|
||||
} else {
|
||||
if (PackageUtils.isCanLaunchSetup(getApplicationContext(), downloadEntity.getPath())) {
|
||||
startActivity(PackageUtils.getInstallIntent(downloadEntity.getPath()));
|
||||
} else {
|
||||
// 弹出卸载提示框
|
||||
EventBus.getDefault().post(new EBShowDialog("plugin", downloadEntity.getPath()));
|
||||
}
|
||||
// 弹出卸载提示框
|
||||
EventBus.getDefault().post(new EBShowDialog("plugin", downloadEntity.getPath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -462,9 +430,6 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
// 初始化PlatformUtils
|
||||
PlatformUtils.getInstance(getApplicationContext());
|
||||
|
||||
// 解决助手奔溃后导致的下载状态保留问题
|
||||
DownloadManager.getInstance(this).checkAll();
|
||||
|
||||
// 添加观察者
|
||||
DownloadManager.getInstance(this).addObserver(dataWatcher);
|
||||
|
||||
@ -1019,8 +984,11 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
|
||||
toIntent.putExtra("newsId", getIntent().getExtras().getString("newsId"));
|
||||
toIntent.putExtra("entrance", getIntent().getExtras().getString("entrance"));
|
||||
} else if("DownloadManagerActivity".equals(to)) {
|
||||
toIntent.putExtra("packageName" , getIntent().getExtras().getString("packageName"));
|
||||
toIntent.putExtra("currentItem" , 1);
|
||||
String packageName = getIntent().getExtras().getString("packageName");
|
||||
if (packageName != null) {
|
||||
toIntent.putExtra("packageName" , getIntent().getExtras().getString("packageName"));
|
||||
toIntent.putExtra("currentItem" , 1);
|
||||
}
|
||||
} else if ("GameDetailsActivity".equals(to) || "GameDetailActivity".equals(to)) {
|
||||
toIntent.putExtra("gameId", getIntent().getExtras().getString("gameId"));
|
||||
toIntent.putExtra("entrance", getIntent().getExtras().getString("entrance"));
|
||||
|
||||
@ -26,6 +26,8 @@ import com.gh.common.constant.Config;
|
||||
import com.gh.common.util.FileUtils;
|
||||
import com.gh.common.util.PackageUtils;
|
||||
import com.gh.common.util.Utils;
|
||||
import com.gh.download.DownloadManager;
|
||||
import com.gh.download.DownloadService;
|
||||
import com.gh.gamecenter.db.info.FilterInfo;
|
||||
import com.gh.gamecenter.eventbus.EBReuse;
|
||||
import com.gh.gamecenter.manager.DataCollectionManager;
|
||||
@ -226,6 +228,12 @@ public class SplashScreenActivity extends BaseActivity {
|
||||
*/
|
||||
DataCollectionManager.getInstance(getApplicationContext()).upload();
|
||||
|
||||
// 解决助手奔溃后导致的下载状态保留问题
|
||||
DownloadManager.getInstance(this).checkAll();
|
||||
|
||||
// 开启下载服务
|
||||
startService(new Intent(this, DownloadService.class));
|
||||
|
||||
// 不是第一次启动
|
||||
if (!sp.getBoolean("isNewFirstLaunch", true)) {
|
||||
int height = sp.getInt("actionbar_height", 0);
|
||||
|
||||
@ -2,7 +2,6 @@ package com.gh.gamecenter.download;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.os.Handler;
|
||||
import android.support.v4.util.ArrayMap;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.TextUtils;
|
||||
@ -34,7 +33,7 @@ import com.gh.gamecenter.R;
|
||||
import com.gh.gamecenter.db.info.ConcernInfo;
|
||||
import com.gh.gamecenter.entity.GameUpdateEntity;
|
||||
import com.gh.gamecenter.eventbus.EBDownloadChanged;
|
||||
import com.gh.gamecenter.eventbus.EBPerformClick;
|
||||
import com.gh.gamecenter.eventbus.EBSkip;
|
||||
import com.gh.gamecenter.manager.ConcernManager;
|
||||
import com.gh.gamecenter.manager.DataCollectionManager;
|
||||
import com.gh.gamecenter.manager.PackageManager;
|
||||
@ -73,8 +72,6 @@ public class GameUpdateAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
|
||||
private String packageName;
|
||||
|
||||
private Handler handler = new Handler();
|
||||
|
||||
public GameUpdateAdapter(Context context,
|
||||
LinearLayout loading,
|
||||
LinearLayout none,
|
||||
@ -539,7 +536,8 @@ public class GameUpdateAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
PackageUtils.launchApplicationByPackageName(context,
|
||||
updateEntity.getPackageName());
|
||||
} else if ("更新中".equals(str) || "插件化中".equals(str)) {
|
||||
handler.postDelayed(runnable, 300);
|
||||
notifyItemChanged(0);
|
||||
EventBus.getDefault().post(new EBSkip("DownloadManagerActivity", 0));
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -547,7 +545,6 @@ public class GameUpdateAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
if (packageName != null) {
|
||||
viewHolder.gu_item_btv_update.performClick();
|
||||
packageName = null;
|
||||
handler.postDelayed(runnable, 800);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -633,17 +630,10 @@ public class GameUpdateAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
DownloadManager.getInstance(context).add(downloadEntity);
|
||||
entryMap.put(position, downloadEntity);
|
||||
|
||||
handler.postDelayed(runnable, 300);
|
||||
notifyItemChanged(0);
|
||||
EventBus.getDefault().post(new EBSkip("DownloadManagerActivity", 0));
|
||||
}
|
||||
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
notifyItemChanged(0);
|
||||
EventBus.getDefault().post(new EBPerformClick("update"));
|
||||
}
|
||||
};
|
||||
|
||||
public List<GameUpdateEntity> getUpdateList() {
|
||||
return updateList;
|
||||
}
|
||||
|
||||
@ -1,20 +0,0 @@
|
||||
package com.gh.gamecenter.eventbus;
|
||||
|
||||
public class EBPerformClick {
|
||||
|
||||
private String from;
|
||||
|
||||
public EBPerformClick(String from) {
|
||||
super();
|
||||
this.from = from;
|
||||
}
|
||||
|
||||
public String getFrom() {
|
||||
return from;
|
||||
}
|
||||
|
||||
public void setFrom(String from) {
|
||||
this.from = from;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
package com.gh.gamecenter.receiver;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import com.gh.common.util.RunningUtils;
|
||||
import com.gh.gamecenter.DownloadManagerActivity;
|
||||
import com.gh.gamecenter.SplashScreenActivity;
|
||||
import com.gh.gamecenter.eventbus.EBSkip;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
/**
|
||||
* Created by LGT on 2016/10/10.
|
||||
*/
|
||||
public class DownloadReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
|
||||
if (RunningUtils.isRunning(context)) {
|
||||
// 助手正在运行
|
||||
if (RunningUtils.isEqualsTop(context, DownloadManagerActivity.class.getName())) {
|
||||
if (RunningUtils.isApplicationBroughtToBackground(context)) {
|
||||
// 这里是指从后台返回到前台 前两个的是关键
|
||||
Intent intent2 = new Intent();
|
||||
intent2.setAction(Intent.ACTION_MAIN);
|
||||
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
intent2.setComponent(new ComponentName(context, DownloadManagerActivity.class));
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
|
||||
| Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
||||
context.startActivity(intent2);
|
||||
}
|
||||
// 切换到游戏下载fragment
|
||||
EventBus.getDefault().post(new EBSkip("DownloadManagerActivity", 0));
|
||||
} else {
|
||||
Intent intent2 = new Intent(context, DownloadManagerActivity.class);
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(intent2);
|
||||
}
|
||||
} else {
|
||||
// 助手未在运行
|
||||
Intent intent2 = new Intent(context, SplashScreenActivity.class);
|
||||
intent2.setAction(Intent.ACTION_MAIN);
|
||||
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
intent2.putExtra("to", "DownloadManagerActivity");
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(intent2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,60 @@
|
||||
package com.gh.gamecenter.receiver;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import com.gh.common.util.PackageUtils;
|
||||
import com.gh.common.util.RunningUtils;
|
||||
import com.gh.gamecenter.DownloadManagerActivity;
|
||||
import com.gh.gamecenter.SplashScreenActivity;
|
||||
import com.gh.gamecenter.eventbus.EBMiPush;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
/**
|
||||
* Created by LGT on 2016/10/10.
|
||||
*/
|
||||
public class InstallReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String path = intent.getStringExtra("path");
|
||||
if (PackageUtils.isCanLaunchSetup(context, path)) {
|
||||
context.startActivity(PackageUtils.getInstallIntent(path));
|
||||
} else {
|
||||
if (RunningUtils.isRunning(context)) {
|
||||
if (RunningUtils.isEqualsTop(context, DownloadManagerActivity.class.getName())) {
|
||||
// 这里是指从后台返回到前台 前两个的是关键
|
||||
Intent intent2 = new Intent();
|
||||
intent2.setAction(Intent.ACTION_MAIN);
|
||||
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
intent2.setComponent(new ComponentName(context, DownloadManagerActivity.class));
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
|
||||
| Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
||||
context.startActivity(intent2);
|
||||
EventBus.getDefault().post(new EBMiPush("plugin_install", path));
|
||||
} else {
|
||||
Intent intent2 = new Intent(context,
|
||||
DownloadManagerActivity.class);
|
||||
intent2.putExtra("currentItem", 0);
|
||||
intent2.putExtra("path", path);
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(intent2);
|
||||
}
|
||||
} else {
|
||||
// 应用未在运行
|
||||
Intent intent2 = new Intent(context, SplashScreenActivity.class);
|
||||
intent2.setAction(Intent.ACTION_MAIN);
|
||||
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
intent2.putExtra("from", "plugin_install");
|
||||
intent2.putExtra("path", path);
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(intent2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,77 +0,0 @@
|
||||
package com.gh.gamecenter.receiver;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityManager.RunningTaskInfo;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import com.gh.common.util.RunningUtils;
|
||||
import com.gh.gamecenter.DownloadManagerActivity;
|
||||
import com.gh.gamecenter.SplashScreenActivity;
|
||||
import com.gh.gamecenter.eventbus.EBMiPush;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
public class UninstallReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
|
||||
String path = intent.getStringExtra("path");
|
||||
if (RunningUtils.isRunning(context)) {
|
||||
if (RunningUtils.isEqualsTop(context,
|
||||
DownloadManagerActivity.class.getName())) {
|
||||
ActivityManager manager = (ActivityManager) context
|
||||
.getSystemService(Context.ACTIVITY_SERVICE);
|
||||
List<RunningTaskInfo> task_info = manager.getRunningTasks(20);
|
||||
String packageName = context.getPackageName();
|
||||
for (int i = 0; i < task_info.size(); i++) {
|
||||
if (packageName.equals(task_info.get(i).topActivity
|
||||
.getPackageName())) {
|
||||
String className = task_info.get(i).topActivity
|
||||
.getClassName();
|
||||
// 这里是指从后台返回到前台 前两个的是关键
|
||||
Intent intent2 = new Intent();
|
||||
intent2.setAction(Intent.ACTION_MAIN);
|
||||
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
try {
|
||||
intent2.setComponent(new ComponentName(context,
|
||||
Class.forName(className)));
|
||||
} catch (ClassNotFoundException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
// intent2.setClass(context, Class.forName(className));
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
|
||||
| Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
||||
context.startActivity(intent2);
|
||||
}
|
||||
}
|
||||
EventBus.getDefault().post(new EBMiPush("plugin_install", path));
|
||||
} else {
|
||||
Intent intent2 = new Intent(context,
|
||||
DownloadManagerActivity.class);
|
||||
intent2.putExtra("currentItem", 0);
|
||||
intent2.putExtra("path", path);
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(intent2);
|
||||
}
|
||||
|
||||
} else {
|
||||
// 应用未在运行
|
||||
Intent intent2 = new Intent(context, SplashScreenActivity.class);
|
||||
intent2.setAction(Intent.ACTION_MAIN);
|
||||
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
intent2.putExtra("from", "plugin_install");
|
||||
intent2.putExtra("path", path);
|
||||
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(intent2);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user