private void OpenNotification(Context context, Bundle bundle) { //清除所有通知 JPushInterface.ClearAllNotifications(context); //判断app进程是否存活 if (EldYoungUtil.IsApplive(context, "com.lelaozu.communitycenter")) { //如果存活的话,就直接启动报警DetailActivity,但要考虑一种情况,就是app的进程虽然仍然在 //但Task栈已经空了,比如用户点击Back键退出应用,但进程还没有被系统回收,如果直接启动 //DetailActivity,再按Back键就不会返回任何界面了。所以在启动DetailActivity前,要先启动splash界面。 Log.Info("NotificationReceiver", "the app process is alive"); Intent mainIntent = new Intent(context, typeof(MainActivity)); mainIntent.SetFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop); Intent alarmDetailInfoIntent = new Intent(context, typeof(AlarmDetailInfoActivity)); bundle.PutString("alarmOrigin", "Jpush"); alarmDetailInfoIntent.PutExtras(bundle); Intent[] intents = new Intent[] { mainIntent, alarmDetailInfoIntent }; context.StartActivities(intents); } else { //如果app进程已经被杀死,先重新启动app,将alarmDetailActivity的启动参数传入Intent中,参数经过 //SplashActivity传入MainActivity,此时app的初始化已经完成,在MainActivity中就可以根据传入,参数跳转到DetailActivity中去了 Log.Info("NotificationReceiver", "the app process is dead"); Intent launchIntent = context.PackageManager.GetLaunchIntentForPackage("com.lelaozu.communitycenter"); launchIntent.SetFlags( ActivityFlags.NewTask | ActivityFlags.ResetTaskIfNeeded); bundle.PutString("alarmOrigin", "Jpush"); launchIntent.PutExtras(bundle); context.StartActivity(launchIntent); } }
// private void OpenNotification(Context context,Bundle bundle) // { // //清除通知 // //JPushInterface.ClearNotificationById(context,bundle.GetInt(JPushInterface.ExtraNotificationId));//根据通知id // String extras = bundle.GetString(JPushInterface.ExtraExtra); // JPushInterface.ClearAllNotifications(context);//清除所有通知 // Intent intent = new Intent(context,typeof(AlarmDetailInfoActivity)); // bundle.PutString("alarmOrigin","Jpush"); // intent.PutExtras (bundle); // intent.SetFlags (ActivityFlags.NewTask); // context.StartActivity (intent); // } private void OpenNotification(Context context, Bundle bundle) { //清除所有通知 JPushInterface.ClearAllNotifications(context); //判断app进程是否存活 if (EldYoungUtil.IsApplive(context, "com.eldyoung.lelaozuandroidapp")) { //如果存活的话,就直接启动报警DetailActivity,但要考虑一种情况,就是app的进程虽然仍然在 //但Task栈已经空了,比如用户点击Back键退出应用,但进程还没有被系统回收,如果直接启动 //DetailActivity,再按Back键就不会返回任何界面了。所以在启动DetailActivity前,要先启动splash界面。 Log.Info("NotificationReceiver", "the app process is alive"); bool mainActivityexistflag = false; Intent mainIntent = new Intent(context, typeof(MainFragActivity)); var cmpName = mainIntent.ResolveActivity(context.PackageManager); if (cmpName != null) { //系统存在此activity ActivityManager _activityManager = (ActivityManager)context.GetSystemService(Context.ActivityService); var taskInfoLists = _activityManager.GetRunningTasks(20); foreach (ActivityManager.RunningTaskInfo taskInfo in taskInfoLists) { if (taskInfo.BaseActivity.Equals(cmpName)) { mainActivityexistflag = true; break; } } } //堆栈中不存在主界面活动,进入splash界面 if (!mainActivityexistflag) { Intent launchIntent = context.PackageManager.GetLaunchIntentForPackage("com.eldyoung.lelaozuandroidapp"); launchIntent.SetFlags( ActivityFlags.NewTask | ActivityFlags.ResetTaskIfNeeded); bundle.PutString("alarmOrigin", "Jpush"); launchIntent.PutExtras(bundle); context.StartActivity(launchIntent); } else { //堆栈中存在主界面活动 Intent alarmDetailInfoIntent = new Intent(context, typeof(AlarmDetailInfoActivity)); alarmDetailInfoIntent.SetFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop); bundle.PutString("alarmOrigin", "Jpush"); alarmDetailInfoIntent.PutExtras(bundle); context.StartActivity(alarmDetailInfoIntent); } } else { //如果app进程已经被杀死,先重新启动app,将alarmDetailActivity的启动参数传入Intent中,参数经过 //SplashActivity传入MainActivity,此时app的初始化已经完成,在MainActivity中就可以根据传入,参数跳转到DetailActivity中去了 Log.Info("NotificationReceiver", "the app process is dead"); Intent launchIntent = context.PackageManager.GetLaunchIntentForPackage("com.eldyoung.lelaozuandroidapp"); launchIntent.SetFlags( ActivityFlags.NewTask | ActivityFlags.ResetTaskIfNeeded); bundle.PutString("alarmOrigin", "Jpush"); launchIntent.PutExtras(bundle); context.StartActivity(launchIntent); } }