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);
            }
        }
示例#3
0
 public void ClearAllNotification()
 {
     JPushInterface.ClearAllNotifications(Android.App.Application.Context);
 }