美文网首页Android日常
点击Notification跳转指定的activity

点击Notification跳转指定的activity

作者: wasdzy111 | 来源:发表于2020-07-08 10:30 被阅读0次

    1、代码如下:

           //适配8.0service
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
                NotificationChannel mChannel = null;
                mChannel = new NotificationChannel(CHANNEL_ID_STRING, "xxx", NotificationManager.IMPORTANCE_HIGH);
                mChannel.enableVibration(false);//禁用震动
                mChannel.setSound(null, null);//设置没有声音
                notificationManager.createNotificationChannel(mChannel);
                PendingIntent pendingIntent = toMainActivity();
                Notification notification = new Notification.Builder(getApplicationContext(), CHANNEL_ID_STRING)
                        .setContentText("xxx运行中")
                        .setContentTitle("xxx")
                        .setAutoCancel(false)
                        .setOngoing(true)
                        .setSmallIcon(R.mipmap.ic_logo)
                        .setContentIntent(pendingIntent)
                        .setPriority(PRIORITY_MAX)
                        .build();
                startForeground(1, notification);
            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {     //如果API大于18,需要弹出一个可见通知
                Notification.Builder builder = new Notification.Builder(this);
                builder.setSmallIcon(R.mipmap.ic_logo);
                builder.setContentTitle("xxx");
                builder.setContentText("xxx运行中");
                PendingIntent pendingIntent = toMainActivity();
                builder.setContentIntent(pendingIntent);
                startForeground(NOTICE_ID, builder.build());
    
                // 如果觉得常驻通知栏体验不好
                // 可以通过启动CancelNoticeService,将通知移除,oom_adj值不变
                //Intent intent = new Intent(this, CancelNoticeService.class);
                //StartServiceUtil.start(this, intent);
            } else {
                startForeground(NOTICE_ID, new Notification());
            }
    

    2、跳转代码

     private PendingIntent toMainActivity() {
            //点击广播监听
            Intent intentClick = null;
            try {
                intentClick = new Intent(this, Class.forName("com.xxx.MainActivity"));    
                //如果跳转的activity 是一个普通的设置FLAG_ACTIVITY_NEW_TASK即可,
                //如果是一个singletask activity 则需要添加FLAG_ACTIVITY_CLEAR_TOP ,否则启动可能失败
                intentClick.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intentClick.addCategory("android.intent.category.LAUNCHER");
                intentClick.setAction("android.intent.action.MAIN");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            return PendingIntent.getActivity(this, 0, intentClick, 0);
        }
    

    相关文章

      网友评论

        本文标题:点击Notification跳转指定的activity

        本文链接:https://www.haomeiwen.com/subject/qauqcktx.html