参考 https://www.twle.cn/l/yufei/android/android-basic-notification.html
解决问题 https://www.freesion.com/article/13071072873/
notify_detail.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/notify_detail" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是通知详情页" /> </LinearLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
@OnClick(R.id.btn_pop_no) protected void notifyOnClick(View view) { Log.d(msg, "弹出通知"); NotificationManager mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //创建大图标的 Bitmap Bitmap LargeBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.app_icon_128x128); //定义一个 PendingIntent 点击 Notification 后启动一个 Activity Intent intent = new Intent(MainActivity.this, NotifyDetailActivity.class); PendingIntent pit = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); //设置图片,通知标题,发送时间,提示方式等属性 Notification.Builder mBuilder = new Notification.Builder(this); mBuilder.setContentTitle("简单教程") //标题 .setContentText("Android 基础教程上线啦") // 内容 .setSubText("简单教程,简单编程") // 内容下面的一小段文字 .setTicker("简单教程上线啦.......") // 收到信息后状态栏显示的文字信息 .setWhen(System.currentTimeMillis()) // 设置通知时间 .setSmallIcon(R.drawable.app_icon_32x32) // 设置小图标 .setLargeIcon(LargeBitmap) // 设置大图标 .setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE) //设置默认的三色灯与振动器 .setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.sms)) //设置自定义的提示音 .setAutoCancel(true) //设置点击后取消Notification .setContentIntent(pit); // 兼容 API 26,Android 8.0 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 第三个参数表示通知的重要程度,默认则只在通知栏闪烁一下 NotificationChannel notificationChannel = new NotificationChannel("AppTestNotificationId", "AppTestNotificationName", NotificationManager.IMPORTANCE_DEFAULT); // 注册通道,注册后除非卸载再安装否则不改变 mNManager.createNotificationChannel(notificationChannel); mBuilder.setChannelId("AppTestNotificationId"); } Notification notify = mBuilder.build(); mNManager.notify(888888, notify); //清楚调用, //除了可以根据 ID 来取消 Notification外,还可以调用 ·cancelAll();关闭该应用产生的所有通知 //mNManager.cancel(888888); } |