1.PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
第4个参数必须为PendingIntent.FLAG_UPDATE_CURRENT,否则点击跳转一次后,第二次就无效了
2.mBuilder
的setContentText
,setContentText
至少设置一个,不然点击无效。
- 增加前台服务权限<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
public static final int NOTIFICATION_ID=1111;
public static final String CHANNEL_ID = "xxxChannelId";
public static final String CHANNEL_NAME = "xxx";
@Override
public void onCreate() {
super.onCreate();
Intent intent=new Intent(this, GoToActivity.class);
PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);//1
registerNotificationChannel();
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID);
mBuilder.setSmallIcon(R.mipmap.logo)//必须要有
.setContentIntent(pendingIntent)
.setContentText("点击回到主界面")
.setContentTitle(getResources().getString(R.string.app_name))
//可选
//.setSound(null)
//.setVibrate(null)
//...
;
startForeground(NOTIFICATION_ID, mBuilder.build());
}
/**
* 注册通知通道
*/
private void registerNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel notificationChannel = mNotificationManager.getNotificationChannel(CHANNEL_ID);
if (notificationChannel == null) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
//是否在桌面icon右上角展示小红点
channel.enableLights(false);
//小红点颜色
//channel.setLightColor(Color.RED);
//通知显示
//channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
//是否在久按桌面图标时显示此渠道的通知
//channel.setShowBadge(true);
mNotificationManager.createNotificationChannel(channel);
}
}
}
网友评论