notificationmanager manager = (notificationmanager)getSystemService(NOTIFICATION_SERVICE);
2.使用一个Builder构造器来创建一个Notification对象
Notification notification = new NotificationCompat.Builder(content).build();
3.当然,上面的代码只是创建了一个空的Notification对象,我们可以在.build()前面添加多个设置方法来对Notification进行设置
Notification notification = new NotificationCompat.Builder(MainActivity.this) .setContentTitle("牛皮哄哄") //设置通知标题 .setContentText("精神小伙") //设置通知内容 .setWhen(System.currentTimeMillis()) //指定通知被创建的时间 .setSmallicon(R.mipmap.ic_launcher) //使用小图标 .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //使用大图片 .build();
4.以上的工作完成之后只需要调用notificationmanager的notify()方法就可以让通知显示出来了
activity_main.xml代码如下
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:app="http://schemas.androID.com/apk/res-auto" androID:orIEntation="vertical" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" > <button androID:ID="@+ID/button" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="发送通知" /></linearLayout>
可以看到我们在布局文件中添加了一个按钮,用于发送一条通知
MainActivity代码如下所示
public class MainActivity extends AppCompatActivity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); button button = findVIEwByID(R.ID.button);//获取点击按钮 button.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { notificationmanager manager = (notificationmanager)getSystemService(NOTIFICATION_SERVICE); //获取notificationmanager实例 Notification notification = new NotificationCompat.Builder(MainActivity.this) .setContentTitle("牛皮哄哄")//通知标题 .setContentText("精神小伙") //通知内容 .setWhen(System.currentTimeMillis()) //指定通知被创建的时间 .setSmallicon(R.mipmap.ic_launcher)//使用小图标 .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))//使用大图片 .build(); manager.notify(1,notification); } }); }}
现在已经完成了通知的创建工作,现在开始点击运行一下,你会惊奇的发现压根就没有效果!!!! 这时百度过后才发现Android8.0以上的的通知要设置渠道,否则就无法显示。修改好的代码如下
public class MainActivity extends AppCompatActivity{ @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); button button = findVIEwByID(R.ID.button);//获取点击按钮 button.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { notificationmanager manager = (notificationmanager)getSystemService(NOTIFICATION_SERVICE);//获取notificationmanager实例 NotificationCompat.Builder builder;//创建通知对象 if (Build.VERSION.SDK_INT >= 26) {//判断AndroID的版本 NotificationChannel channel = new NotificationChannel(String.valueOf(1), "name", notificationmanager.importANCE_HIGH); //当AndroID版本大于等于8时,创建通知渠道(Notification Channels) manager.createNotificationChannel(channel); builder = new NotificationCompat.Builder(MainActivity.this,String.valueOf(1));//获取 }else { builder = new NotificationCompat.Builder(MainActivity.this);//当版本低于8时使用 } builder.setContentTitle("牛皮哄哄")//通知标题 .setContentText("精神小伙") //通知内容 .setWhen(System.currentTimeMillis()) //指定通知被创建的时间 .setSmallicon(R.mipmap.ic_launcher) //使用小图标 .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)); //使用大图片 Notification notification = builder.build(); manager.notify(1,notification); } }); }}
在上面的代码中加了if语句,这时就能适应所有的AndroID版本了。
总结以上是内存溢出为你收集整理的Android 移动应用开发 使用Notification通知 及NotificationChannel的使用全部内容,希望文章能够帮你解决Android 移动应用开发 使用Notification通知 及NotificationChannel的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)