Notification

2016-04-27  本文已影响72人  TTTqiu

一、通知的创建方法


1. 获得 NotificationManager 实例 manager。
2. 获得 Notification.Builder 实例 builder。
3. 利用 builder 设置通知属性。
4. 使用 builder 的 build() 方法创建 Notification 实例。
5. 使用 manager 的 notify( 通知 id, Notification 实例 ) 方法显示通知。
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(MainActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setContentTitle("title");
builder.setContentText("text");
builder.setWhen(System.currentTimeMillis());        //   显示时间
Notification notification = builder.build();

manager.notify(1, notification);

二、通知的点击事件


1. 创建 Intent。
2. 通过 PendingIntent 的静态方法 getActivity()、getBroadcast()、getService(),获得 PendingIntent 实例。
3. 传入 builder 的 setContentIntent( PendingIntent 实例 ) 方法。
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
PendingIntent pi=PendingIntent.getActivity(MainActivity.this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
builder.setContentIntent(pi);
  1. 第一个参数:Context
  2. 第二个参数:一般不用,传 0 即可
  3. 第三个参数:Intent 对象
  4. 第四个参数:设置 PendingIntent 的行为
    1.FLAG_ONE_SHOT
    2.FLAG_NO_CREATE
    3.FLAG_CANCEL_CURRENT
    4.FLAG_UPDATE_CURRENT

三、取消通知


调用 NotificationManager 的 cancel( 通知 id )。
manager.cancel(1);

比如进入 Main2Activity 后取消通知:

public class NotificationActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notification_layout);

        NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        manager.cancel(1);
    }
}

四、通知的高级技巧


1. 声音

Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
notification.sound = soundUri;

2. 震动

<uses-permission android:name="android.permission.VIBRATE" />
long[] vibrates = {0, 1000, 1000, 1000};
notification.vibrate = vibrates;

3. LED 灯

如果想要实现LED 灯以绿色的灯光一闪一闪的效果,就可以写成:

notification.ledARGB = Color.GREEN;
notification.ledOnMS = 1000;
notification.ledOffMS = 1000;
notification.flags = Notification.FLAG_SHOW_LIGHTS;

4. 通知的默认效果

notification.defaults = Notification.DEFAULT_ALL;
上一篇下一篇

猜你喜欢

热点阅读