公告
财富商城
积分规则
提问
发文
2019-03-09 22:27发布
ゆ 、 Hurt°
Two log showing
1: Use of stream types is deprecated for operations other than volume control
2: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
When you target Android 8.0 (API level 26), you must implement one or more notification channels to display notifications to your users.
int NOTIFICATION_ID = 234; NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { String CHANNEL_ID = "my_channel_01"; CharSequence name = "my_channel"; String Description = "This is my channel"; int importance = NotificationManager.IMPORTANCE_HIGH; NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance); mChannel.setDescription(Description); mChannel.enableLights(true); mChannel.setLightColor(Color.RED); mChannel.enableVibration(true); mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); mChannel.setShowBadge(false); notificationManager.createNotificationChannel(mChannel); } NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx, CHANNEL_ID) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle(title) .setContentText(message); Intent resultIntent = new Intent(ctx, MainActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(ctx); stackBuilder.addParentStack(MainActivity.class); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(resultPendingIntent); notificationManager.notify(NOTIFICATION_ID, builder.build());
String CHANNEL_ID = "my_channel"; NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this,CHANNEL_ID);
I had a similar problem but starting an service as a background activity, in the service this code worked:
public static final int PRIMARY_FOREGROUND_NOTIF_SERVICE_ID = 1001; @Override public void onCreate() { super.onCreate(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String id = "_channel_01"; int importance = NotificationManager.IMPORTANCE_LOW; NotificationChannel mChannel = new NotificationChannel(id, "notification", importance); mChannel.enableLights(true); Notification notification = new Notification.Builder(getApplicationContext(), id) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("My chat") .setContentText("Listening for incoming messages") .build(); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if (mNotificationManager != null) { mNotificationManager.createNotificationChannel(mChannel); mNotificationManager.notify(PRIMARY_FOREGROUND_NOTIF_SERVICE_ID, notification); } startForeground(PRIMARY_FOREGROUND_NOTIF_SERVICE_ID, notification); } }
It's not the best solution but just to start the service in the background It does work
You can solve this in two ways but for both of them you need to create a notification channel with an specific channel id.
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); String id = "my_channel_01"; int importance = NotificationManager.IMPORTANCE_LOW; NotificationChannel mChannel = new NotificationChannel(id, name,importance); mChannel.enableLights(true); mNotificationManager.createNotificationChannel(mChannel);
First way is to set channel for notification in constructor:
Notification notification = new Notification.Builder(MainActivity.this , id).setContentTitle("Title"); mNotificationManager.notify("your_notification_id", notification);
Second way is to set the channel by Notificiation.Builder.setChannelId()
Notification notification = new Notification.Builder(MainActivity.this).setContentTitle("Title"). setChannelId(id); mNotificationManager.notify("your_notification_id", notification);
Hope this helps
First create the notification channel:
public static final String NOTIFICATION_CHANNEL_ID = "4655"; //Notification Channel CharSequence channelName = NOTIFICATION_CHANNEL_NAME; int importance = NotificationManager.IMPORTANCE_LOW; NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, NOTIFICATION_CHANNEL_NAME, importance); notificationChannel.enableLights(true); notificationChannel.setLightColor(Color.RED); notificationChannel.enableVibration(true); notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(notificationChannel);
then use the channel id in the constructor:
final NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID) .setDefaults(Notification.DEFAULT_ALL) .setSmallIcon(R.drawable.ic_timers) .setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}) .setSound(null) .setContent(contentView) .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setLargeIcon(picture) .setTicker(sTimer) .setContentIntent(timerListIntent) .setAutoCancel(false);
This issue is related to the old FCM version.
Update your dependency to com.google.firebase:firebase-messaging:15.0.2 or higher.
com.google.firebase:firebase-messaging:15.0.2
This will fix the error
failed to post notification on channel null
when your app receives notifications in the background because now Firebase provides a default notification channel with basic settings.
But you also can specify the default Notification Channel for FCM in the manifest.
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id"/>
To learn more here
最多设置5个标签!
I had a similar problem but starting an service as a background activity, in the service this code worked:
It's not the best solution but just to start the service in the background It does work
You can solve this in two ways but for both of them you need to create a notification channel with an specific channel id.
First way is to set channel for notification in constructor:
Second way is to set the channel by Notificiation.Builder.setChannelId()
Hope this helps
First create the notification channel:
then use the channel id in the constructor:
This issue is related to the old FCM version.
Update your dependency to
com.google.firebase:firebase-messaging:15.0.2
or higher.This will fix the error
when your app receives notifications in the background because now Firebase provides a default notification channel with basic settings.
But you also can specify the default Notification Channel for FCM in the manifest.
To learn more here