public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// //让通知栏点击后消失和setAutoCancel(true) 功能相同
// NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE) ;
// manager.cancel(1);//id就是我们设置的ID
Button sendNotice = (Button) findViewById(R.id.send_notice);
sendNotice.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.send_notice:
String Notification_ID ="com.inone.notificationtest";//必须唯一
Intent intent =new Intent(this,NotificationActivity.class); //意图去哪个活动
//PendingIntent实例获取活动
PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
//必须写这一步否则无法显示通知(创建通道)
NotificationChannel channel = new NotificationChannel(Notification_ID,"自己随便写",NotificationManager.IMPORTANCE_LOW);
//状态栏通知的管理类,负责发通知、清楚通知等。
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//创建可以发布通知的通道
manager.createNotificationChannel(channel);
//是具体的状态栏通知对象
Notification notification = new NotificationCompat.Builder(MainActivity.this).setChannelId(Notification_ID)
//标题
.setContentTitle("大傻瓜")
//内容
.setContentText("清风不问赶路之人")
//指定通知被创建时间
.setWhen(System.currentTimeMillis())
//设置通知小图标
.setSmallIcon(R.mipmap.ic_launcher)
//通知大图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.setContentIntent(pi) //启动跳转至活动
.setAutoCancel(true) //让通知栏图标消失
.build();
//显示通知
manager.notify(1,notification);
}
}
NotificationCompat.Builder下面一些常用操作:
-
setSound():在通知发出的时候播放一段音频
eg:setSpund(Uri.fromFile(new File("音乐地址”))); -
setVibrate():设置手机振动和静止
eg:setVibrate(new long[] {0,1000,1000,1000});
注:下标为0的值表示手机静止时长
下标为1的值表示振动时长
下标为2的值表示手机静止时长,以此类推
上面的意思是:通知到来立即振动1秒,静止1秒,在振动1秒,记得添加权限VIBRATE。 -
setLights():设置LED灯闪烁
eg:setLights(Color.GREEN,1000,1000);
注:第一个参数指定LED灯的颜色,第二个参数用于指定LED灯亮起时长,第三个参数:LED灯暗去时长 -
setDefaults(NotificationCompat.DEFAULT_ALL)手机默认效果(铃声,振动…)
-
setStyle():用于显示一段长文字以及一张大图片
-
setPriority(NotificationCompat.PRIORITY_DEFAULT):设置通知的重要程度PRIORITY_DEFAULT:默认重要程度
PRIORITY_MIN:最低
PRIORITY_MAX:最高
PRIORITY_LOW:较低
PRIORITY_HIGH:较高