Android--通知的简单使用

通知的基本用法

创建通知步骤:

1.首先需要获取一个NotificationManager对象,用于管理通知,
调用getSystemService()方法获取,此方法接收一个字符串参数用于确定获取系统的哪一个服务

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

2.接着为通知创建一个通道

NotificationChannel channel = new NotificationChannel(id, "test", importance);
manager.createNotification(channel);

3.接下来使用NotificationCompat类Builder构造器创建Notification对象,并设置属性。

Notification notification = new NotificationCompat.Builder(NotificationTest.this, id)//设置通知对象
           //基础设置
           .setContentTitle("天气预报")
           .setContentText("晴天")
           .setWhen(System.currentTimeMillis())
           .setSmallIcon(R.drawable.fruit)
           .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.fruit))

设置通知的点击事件:

首先使用Intent构建意图,然后将构建好的Intent对象传入getActivity()方法中,以得到PendingIntent实例,接着在NotificationCompat.Builder中调用setContentIntent()方法,把pendingIntent实例传入

通过静态方法getActivity()、getBroadcast()、getService()获取,这三个方法接受四个参数,第一个Context,第二个传0,第三个intent,所以要创建intent对象,第四个参数用于确定PendingIntent的行为,一般传0。

           //通知的点击事件
           .setContentIntent(pending)//构建意图
           .setAutoCancel(true)//点击通知之后自动消失

设置通知效果:

           //设置通知效果
           .setSound(Uri.fromFile(new File("音频文件路径")))//控制手机播放歌曲
           .setVibrate(new long[]{0,1000,1000,1000})//控制手机震动,需要申请权限
           .setDefaults(NotificationCompat.DEFAULT_ALL)//使用通知的默认效果

构建富文本信息,如长文字,图片

           //长文本和大图片显示
           .setStyle(new NotificationCompat.BigTextStyle().bigText("窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠" +
                   "窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠" +
                   "窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠窝是嫩叠"))
           .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(
                   BitmapFactory.decodeResource(getResources(), R.drawable.fruit)))

设置重要程度:

           //设置重要程度
           .setPriority(NotificationCompat.PRIORITY_MAX)
           .build();

简单实现通知示例

public class NotificationTest extends AppCompatActivity {

    private String id = "channel_1";

    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notification_test);

        Intent intent = new Intent(this, RecyclerView.class);//为通知设置点击事件
        PendingIntent pending = PendingIntent.getActivity(this, 0, intent, 0);

        Button sendButton = (Button) findViewById(R.id.send_notice);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);//获取通知管理对象

                NotificationChannel channel = new NotificationChannel(id, "test", NotificationManager.IMPORTANCE_HIGH);//创建通知通道
                manager.createNotificationChannel(channel);//设置通道到管理中

                Notification notification = new NotificationCompat.Builder(NotificationTest.this, id)//设置通知对象
                        .setContentTitle("天气预报")
                        .setContentText("晴天")
                        .setWhen(System.currentTimeMillis())
                        .setSmallIcon(R.drawable.fruit)
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.fruit))

                        .setContentIntent(pending)//构建意图
                        .setAutoCancel(true)//点击通知之后自动消失
                        //设置通知效果
                        .setSound(Uri.fromFile(new File("音频文件路径")))//控制手机播放歌曲
                        .setVibrate(new long[]{0,1000,1000,1000})//控制手机震动,需要申请权限
                        .setDefaults(NotificationCompat.DEFAULT_ALL)//使用通知的默认效果

                        .setStyle(new NotificationCompat.BigTextStyle().bigText("啦啦啦啦啦啦啦"+
                        "啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦"+
                        "啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦"+
                        "啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦"))
                        .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(
                                BitmapFactory.decodeResource(getResources(), R.drawable.fruit)))

                        .setPriority(NotificationCompat.PRIORITY_MAX)

                        .build();
                manager.notify(1, notification);//显示通知
            }
        });
    }

}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值