在集成DDPushClientDemoUDP时,发现推送过来的消息前面的图标不显示,在群里问了,有人说是Android系统的问题,然而换了几个手机、在模拟器上把Android版本改高或者改底都没用。试了很久,才发现其中的n.icon = R.drawable.ic_launcher;只是用来设置顶部通知栏的图标和消息后面的小图标,并不是设置下拉通知列表里的图标。
然后去网上找了一篇关于notification的文章,看完才发现通知栏顶部的图标和消息前面的图标完全是两个设置(那些按示例工程集成却能正常显示的,希望能给个解释);下面就是我改完之后的notifyRunning()方法:
public void notifyRunning(){
NotificationManager notificationManager=(NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent resultIntent = new Intent(this, MainActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_ONE_SHOT);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
notifyBuilder = new NotificationCompat.Builder(this)
.setLargeIcon(bitmap)//这里设置的是下拉消息前面的图标
.setSmallIcon(R.drawable.ic_launcher)//这里设置的是下拉消息后面的图标和顶部通知栏的图标,
相当于n.icon = R.drawable.ic_launcher;
.setContentTitle("DDPushDemoUDP正在运行")
.setContentText("")
.setWhen(System.currentTimeMillis())
.setTicker("DDPushDemoUDP正在运行")
.setOngoing(true)
.setContentIntent(pendingIntent);
notificationManager.notify(0, notifyBuilder.build());
}
这里,我和示例工程创建Notification的方式不同,示例工程里是直接new了一个Notification对象,然后再给对应属性赋值,然而我并没有找到对应消息前面icon的属性。我是new了一个NotificationCompat.Builder对象,然后设置相关属性再build()出Notification。