添加下载状态通知功能

This commit is contained in:
huangzhuanghua
2016-10-11 10:07:04 +08:00
parent 4262ec7386
commit 896c4e980c
12 changed files with 311 additions and 189 deletions

View 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);
}
}
}

View File

@ -66,7 +66,6 @@ public class DownloadManager {
}
}
};
context.startService(new Intent(context, DownloadService.class));
}
public void put(String url, long time) {

View File

@ -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:

View File

@ -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();
}
};
}

View File

@ -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"));

View File

@ -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);

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}
}

View File

@ -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);
}
}
}