android通知的使用

普通通知

//创建通知管理
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//构建一个通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this,"通知分组");
//点击通知相应的intent
Intent mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://xwmdream.cn"));
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, mIntent, 0);
builder.setContentIntent(pendingIntent);
//在状态栏中的小图标,只显示alpha
builder.setSmallIcon(R.drawable.ic_launcher_background);
//通知标题
builder.setContentTitle("标题");
//点击了此标题是否自动划掉此通知
builder.setAutoCancel(true);
//通知里是否显示时间
builder.setShowWhen(true);
//什么时候发送通知,系统毫秒数
builder.setWhen(System.currentTimeMillis());
//状态栏划过的摘要
builder.setTicker("状态栏显示的摘要");
//是否进行中,如果是进行中,则没法清除
builder.setOngoing(false);

//添加一些默认值
/*
NotificationCompat.DEFAULT_SOUND   添加默认声音提醒
NotificationCompat.DEFAULT_VIBRATE 添加默认震动提醒
NotificationCompat.DEFAULT_LIGHTS  添加默认呼吸灯提醒
NotificationCompat.DEFAULT_ALL 同时添加以上三种默认提醒
* */
builder.setDefaults(NotificationCompat.DEFAULT_ALL);
//设置震动停止1000,震100,停400,震500,如果设置了默认值,这个就不管用了
builder.setVibrate(new long[]{1000, 100, 400, 500});

/*优先级  描述
NotificationCompat.PRIORITY_MAX    重要而紧急的通知,通知用户这个事件是时间上紧迫的或者需要立即处理的。
NotificationCompat.PRIORITY_HIGH   高优先级用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的
NotificationCompat.PRIORITY_DEFAULT    默认优先级用于没有特殊优先级分类的通知
NotificationCompat.PRIORITY_LOW    低优先级可以通知用户但又不是很紧急的事件。只显示状态栏图标
NotificationCompat.PRIORITY_MIN    用于后台消息 (例如天气或者位置信息)。只有用户下拉通知抽屉才能看到内容,不会通知和响铃
*/
builder.setPriority(NotificationCompat.PRIORITY_HIGH);

/*锁屏时显示,好像没用
setVisibility() 方法共有三个选值:
1.VISIBILITY_PRIVATE : 显示基本信息,如通知的图标,但隐藏通知的全部内容;
2.VISIBILITY_PUBLIC : 显示通知的全部内容;
3.VISIBILITY_SECRET : 不显示任何内容,包括图标。*/
builder.setVisibility(NotificationCompat.VISIBILITY_SECRET);


//下面是显示进度条
int max = 100; // 进度最大值
int progress = 50;  // 当前进度
boolean indeterminate = false; // 是否是不明确的进度条,为true就是模糊的进度条,就那种花纹一直动的进度条
builder.setProgress(max, progress, indeterminate);


//消息中的内容
builder.setContentText("小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容小内容");

//设置长文本,默认的是一行,多余的是省略号,这个是有多少就显示多少,如果启用这个,就不会显示小内容
builder.setStyle(new NotificationCompat.BigTextStyle().bigText("长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容长内容"));
//显示大图,如果设置这个,会显示一行小内容,然后显示大图片
Bitmap aBigBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
builder.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(aBigBitmap));

//构建一个通知实体
Notification notification = builder.build();
//通过消息管理器发送,第一个参数是消息id参数,要不一样,如果一样就视为同一个通知不会重复发送
notificationManager.notify(num++, notification);
//管理器取消的通知,其中的id是上面发送里面的id
//notificationManager.cancel(0);
//清除所有通知
//notificationManager.cancelAll();

自定义通知

先创建布局文件

message.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center">
    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"/>
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="仗剑走天涯"/>
    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="播放"/>
    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="下一首"/>
</LinearLayout>

Java代码

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this,"通知分组");
builder.setSmallIcon(R.mipmap.ic_launcher);

//加载布局
RemoteViews rv = new RemoteViews(getPackageName(), R.layout.message);

rv.setTextViewText(R.id.tv, "泡沫");//修改自定义View中的歌名

//通过pendingIntent发送广播的方式来设置监听事件
Intent button1I = new Intent("btn1");
PendingIntent button1PI = PendingIntent.getBroadcast(this, 0, button1I, 0);
rv.setOnClickPendingIntent(R.id.btn1,button1PI);

//修改自定义View中的图片(两种方法)
//        rv.setImageViewResource(R.id.iv,R.mipmap.ic_launcher);
rv.setImageViewBitmap(R.id.iv, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
builder.setContent(rv);
Notification notification = builder.build();
notificationManager.notify(num++, notification);


xwm

还是一个菜鸟


Comments are closed.