Android 通知(Notification)详解,最近项目用到了安卓下的 Notification,也就是通知。今天我们就通过一个列子来了解一下 android 下的 Notification,首先是先看怎么使用 Notification。
其实发送一个通知到通知栏特别简单
- private void showNotification(int id, String title, String data) {Intent broadcastIntent = new Intent(this, NotificationReceiver.class); // 设置一个广播接收者去打开要做的事情PendingIntent pendingIntent = PendingIntent.getBroadcast(this, id, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);mBuilder.setContentTitle(title) // 设置通知标题.setContentText(data) // 设置通知内容.setContentIntent(pendingIntent) // 设置点击通知消息的action.setSmallIcon(R.drawable.pushsmall) // 设置通知栏显示的小图标,国产手机一般不显示,默认是用大图标来代替.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)) // 设置通知栏显示的大图标.setAutoCancel(true); // 点击通知消息后通知消息消失NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);notificationManager.notify(id, mBuilder.build());}
广播接收者 NotificationReceiver 的代码
- public class NotificationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //判断app进程是否存活 if (isAppAlive(context, "com.bandeng.temp")) { Intent startIntent = new Intent(context, PushActivity.class); startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(startIntent); } else { Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage("com.bandeng.temp"); launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); Intent detailIntent = new Intent(context, PushActivity.class); Intent[] intents = {launchIntent, detailIntent}; context.startActivities(intents); } } private boolean isAppAlive(Context context, String packageName) { boolean isAppRunning = false; ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List list = am.getRunningTasks(100); for (ActivityManager.RunningTaskInfo info : list) { if (info.topActivity.getPackageName().equals(packageName) && info.baseActivity.getPackageName().equals(packageName)) { isAppRunning = true; break; } } return isAppRunning; }}
看效果
关于通知栏消息我们需要注意一点,就是在 android5.0 之后 setSmallIcon() 设置小图标,如果这个小图标不是背景透明色,小图标就会出现整个白色,上面演示的通知栏小图标的背景是透明的,所以不会出现小白点。下面我就演示将小图标设置成背景不是透明色的大图标
小图标设置为大图标
- mBuilder.setSmallIcon(R.drawable.ic_launcher)
看下面效果
其实在国产手机上一般是没有问题的,因为国产手机的系统被修改过,一般用大图标代替小图标
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。来源: