
安卓”通知“的坑
安卓“通知”的坑,是因为这个。。。
·
漫长经历
5天了,终于成功了!!!
首先是在实验课上,跟着老师给的讲义写代码,写完发现在虚拟机和手机上都运行不了,还会报错,在网上找了许久,试了许多个博主说的方法,都没成功,崩溃了,就好几天不管它了!!!
当时以为是我手机的问题,明明将权限开了,在AndroidManifestx.xml中也设置了权限,如下:
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
还有方法是将build.gradle下的targetSdk版本改为30,我也试了!!!最终都以失败告终。。。
后面又开始怀疑代码的问题,又将代码改了几遍,最终改为了最简单的。。。即通知必备要素
//1.获得NotificationManager对象
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//2.创建一个通知栏对象
Context context = getApplicationContext();
Notification notification = new NotificationCompat.Builder(context,"whatever")
.setContentTitle("This is content title")
.setContentText("This is content text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(SmallDrawable)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.img_girl))
.build();
//3.发送通知
manager.notify(1,notification);
还是失败了!!!!绝望了!!!!!
开始步入正题,解决之道(与上无关)如下:
这不老师刚发下一轮作业,我一看,好家伙,就是关于通知的(如下)
看来是不解决不行了,又在网上摸索了许久,发现了问题在于Android版本的问题,现在大部分都用android11,但在Android 8.0之后版本使用通知时,需要加一个channelld的东西,正确创建通知步骤如下:
1.获得NotificationManager对象
NotificationManager manager = (NotificationManager)
2.创建Channel
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
String channelId = "whatever";
String channelName = "whatever content";
int importance = NotificationManager.IMPORTANCE_HIGH;
manager.createNotificationChannel(new NotificationChannel(channelId, channelName, importance));
}
3.创建一个通知栏对象
Context context = getApplicationContext();
Notification notification = new NotificationCompat.Builder(context,"whatever")
.setContentTitle("This is content title")
.setContentText("This is content text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(SmallDrawable)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.img_girl))
.build();
4.发送通知
manager.notify(1,notification);
希望世界少点bug,多点关爱!!!
解决bug网址: 如何解决android 通知栏不显示的问题 - 指尖,写不尽 - 博客园 (cnblogs.com)
更多推荐
所有评论(0)
您需要登录才能发言
查看更多评论