当我用上两篇所讲到的内容去写一个demo时,就会有以下的提示:
setLatestEventInfo cannot be resolved
我上Stack Overflow查左一下原因,原来是版本问题。
我按照网上所给出的方法更改了一下代码。以下代码需要设置minSdkVersion 16以上。
private NotificationManager notificationManager;//NotificationManager对象
String service=NOTIFICATION_SERVICE;//获取系统服务
notificationManager= (NotificationManager) getSystemService(service);
Intent intent=new Intent(MainActivity.this,MainActivity.class);
PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
Notification.Builder builder=new Notification.Builder(MainActivity.this);
builder.setAutoCancel(true);//点击后会自动消失
builder.setContentTitle("我的标题");
builder.setContentText("我的内容");
builder.setTicker("this is a ticker");
builder.setContentInfo("信息");
builder.setDefaults(Notification.DEFAULT_SOUND);//声音
//builder.setDefaults(Notification.DEFAULT_VIBRATE);//震动
//builder.setDefaults(Notification.DEFAULT_LIGHTS);//闪烁灯
//builder.setDefaults(Notification.DEFAULT_ALL)//声音、震动、闪烁灯
/**
* 自定义震动*/
long[] vibrate={0,100,200,300};
builder.setVibrate(vibrate);
/**
* 自定义闪烁灯*/
builder.setLights(0xff00ff00,300,1000);
builder.setContentIntent(pendingIntent);
builder.setWhen(System.currentTimeMillis());
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setOngoing(true);
//builder.build();
//notification=builder.getNotification();
//Intent intent=new Intent(MainActivity.this,MainActivity.class);
//PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
//notification.setLatestEventInfo(this,"我的标题","我的内容",pendingIntent);
notificationManager.notify(1,builder.build());//发出通知
}
});
cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
notificationManager.cancel(1);//取消通知
}
});
注意的是,自定义设置了震动,需要在配置文件里声明权限,不然程序会崩溃的。
<uses-permission android:name="android.permission.VIBRATE"/>