Androidn Notification的使用,解决找不到setLatestEventInfo方法

幽映每白日,清辉照衣裳。这篇文章主要讲述Androidn Notification的使用,解决找不到setLatestEventInfo方法相关的知识,希望能为你提供帮助。
今天使用4.0.3使用

Notification notification2 = new Notification(R.drawable.advise2,"通知测试", System.currentTimeMillis()); notification2.setLatestEventInfo(getActivity(), "testTitle", "testContent", null);


结果androidstudio报错,setLatestEventInfo该方法找不到,经过查证官方在API  Level  11中,该函数已经被替代,不推荐使用了。古在4.0.3平台也就是API  Level  15中,使用Notification的setLatestEventInfo()函数时,显示setLatestEventInfo()效果。建议使用Notification.Builder来创建 notification 实例


Notification.Builder builder1 = new Notification.Builder(MainActivity.this); builder1.setSmallIcon(R.drawable.advise2); //设置图标 builder1.setTicker("显示第二个通知"); builder1.setContentTitle("通知"); //设置标题 builder1.setContentText("点击查看详细内容"); //消息内容 builder1.setWhen(System.currentTimeMillis()); //发送时间 builder1.setDefaults(Notification.DEFAULT_ALL); //设置默认的提示音,振动方式,灯光 builder1.setAutoCancel(true); //打开程序后图标消失 Intent intent =new Intent (MainActivity.this,Center.class); PendingIntent pendingIntent =PendingIntent.getActivity(MainActivity.this, 0, intent, 0); builder1.setContentIntent(pendingIntent); Notification notification1 = builder1.build(); notificationManager.notify(124, notification1); // 通过通知管理器发送通知

如果该通知只是起到 “ 通知” 的作用,不希望用户点击后有相应的跳转,那么,intent,pendingIntent这几行代码可以不写


Notification.Builder builder = new Notification.Builder(MainActivity.this); builder.setSmallIcon(R.drawable.advise); builder.setTicker("显示第一个通知"); builder.setContentTitle("第一个通知"); builder.setContentText("每天进步一点点"); builder.setWhen(System.currentTimeMillis()); //发送时间 builder.setDefaults(Notification.DEFAULT_ALL); Notification notification = builder.build(); notificationManager.notify(123, notification);

第一个具有点击提示有跳转功能,后面一个没有跳转功能,只是提示作用
以下借鉴其他博主的总结:
  在不同的版本下Notification使用有一些不同,涉及到改成Builder的使用,现在网上大多数资料还是API  Level  11版本前的用法介绍,如果不熟悉的话,会绕一些弯路。
        现在总结如下,希望对以后使用的程序员有所帮助。
        低于API  Level  11版本,也就是Android  2.3.3以下的系统中,setLatestEventInfo()函数是唯一的实现方法。前面的有关属性设置这里就不再提了,网上资料很多。

Intent    intent  =  new  Intent(this,MainActivity);    
PendingIntent  pendingIntent  =  PendingIntent.getActivity(context,  0,  intent,  PendingIntent.FLAG_ONE_SHOT);    
notification.setLatestEventInfo(context,  title,  message,  pendingIntent);                    
manager.notify(id,  notification);    

        高于API  Level  11,低于API  Level  16  (Android  4.1.2)版本的系统中,可使用Notification.Builder来构造函数。但要使用getNotification()来使notification实现。此时,前面版本在notification中设置的Flags,icon等属性都已经无效,要在builder里面设置。
Notification.Builder  builder  =  new  Notification.Builder(context)   
                        .setAutoCancel(true)   
                        .setContentTitle("title")   
                        .setContentText("describe")   
                        .setContentIntent(pendingIntent)   
                        .setSmallIcon(R.drawable.ic_launcher)   
                        .setWhen(System.currentTimeMillis())   
                        .setOngoing(true);    
notification=builder.getNotification();    
        高于API  Level  16的版本,就可以用Builder和build()函数来配套的方便使用notification了。
Notification  notification  =  new  Notification.Builder(context)       
                  .setAutoCancel(true)       
                  .setContentTitle("title")       
                  .setContentText("describe")       
                  .setContentIntent(pendingIntent)       
                  .setSmallIcon(R.drawable.ic_launcher)       
                  .setWhen(System.currentTimeMillis())       
                  .build();        
        【注意点】:
        在构造notification的时候有很多种写法,但是要注意,用
Notification  notification  =  new  Notification();
这种构建方法的时候,一定要加上notification.icon这个设置,不然,程序虽然不会报错,但是会没有效果。
  ======================================================================
实际代码如下: 
服务代码

TimerService.class

package com.adisoon.appservicedemo;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;

import java.util.Timer;
import java.util.TimerTask;

/**
* 延迟1秒在标题栏显示通知
* Created by nimorl on 2017-10-19.
*/

public class TimerService extends Service {
private Timer timer;

@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
super.onCreate();
timer = new Timer(true);
}

@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);

timer.schedule(new TimerTask() {
@Override
public void run() {
String ns = Context.NOTIFICATION_SERVICE;

//获得通知管理器
NotificationManager manager = (NotificationManager) getSystemService(ns);

Notification.Builderbuilder = new Notification.Builder(getApplicationContext());
builder.setSmallIcon(R.drawable.warning);
builder.setTicker("显示第一个通知");
builder.setContentTitle("第一个通知");
builder.setContentText("有病毒正在删除你的文件");
builder.setWhen(System.currentTimeMillis()); //设置时间
Notification notification = builder.build();

//定义通知行为
manager.notify(0,notification);
TimerService.this.stopSelf();

}
},6000);
}
}

主界面调用


startService(new Intent(this,TimerService.class));

【Androidn Notification的使用,解决找不到setLatestEventInfo方法】 

    推荐阅读