1.可以使用3类通知方式来通知用户:
- Toast 通知:适合显示来自后台的简要的文字通知;
- 状态栏通知:适合来自后台的许要持久并接受用户响应的通知;
- 对话框通知:适合和Activity有关的通知(前面已经提过);
2.Toast通知:
- 创建Toast通知:首先用一个makeText()方法来实例化一个Toast对象,它接受3个参数:应用的Context,文本信息和持续长度。然后调用
show()
方法来显示。如:Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show();
也可以简单的写成:Toast.makeText(context, text, duration).show();
- 将Toast通知放在指定的位置上:
使用
setGravity(int, int, int)
,第一个参数为对其方式,第二个位x偏移量,第三个为y偏移量。如:toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
3.状态栏通知:
状态栏通知可以在系统状态栏上显示一个图标(也可以带上文字)和一个在通知窗口中的通知文字内容。当用户选择该通知的时候,系统会启动该通知定义的Intent(通常是加载一个界面)。同时也可以为通知设置声音、震动、和闪光灯。
创建状态栏通知:
Activity
和Service都可以创建一个状态栏通知。需要用到两个类:
和Notification
NotificationManager。具体为:
的应用:
获得一个对
NotificationManager
实例化String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
Notification
对象(同时设置图标、tickerText和时间):定义通知内容和int icon = R.drawable.notification_icon; CharSequence tickerText = "Hello"; long when = System.currentTimeMillis(); Notification notification = new Notification(icon, tickerText, when);
PendingIntent
:将Notification传递给NotificationManager:Context context = getApplicationContext(); CharSequence contentTitle = "My notification"; CharSequence contentText = "Hello World!"; Intent notificationIntent = new Intent(this, MyClass.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
private static final int HELLO_ID = 1; mNotificationManager.notify(HELLO_ID, notification);