Android通知提醒Notification
Notification说明
1,软件希望向用户进行一些提醒操作时,可以采用标题栏提醒通知的形式(Android标准通知机制);
2,当有通知出现时,会在标题栏出现一个小图标,有些通知可以发送声音,震动;
3,当用户通过手指,从标题栏向下拉动的时候,会出现另外一个窗口,显示的就是系统中所有的信息;
4,一般内容,当用户点击时可以进入相应的程序界面;
public class MainActivity extends Activity implements Runnable{
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
* 点击发送普通通知
* @param view
*/
public void btnSend(View view) {
//创建Notification
//需要使用NotificationCompatBuilder
//需要导入android support v4包
//是一个兼容包,需要从AndroidSDK导入
NotificationCompat.Builder builder= new NotificationCompat.Builder(this);
//2,设置图片小图标,在状态栏上面系那是的小图标
//必须设置,否则抛异常
builder.setSmallIcon(R.drawable.ic_launcher)//图标
.setContentTitle("标题")//标题
.setContentText("我是通知");//通知
//可选属性
//设置通知默认的状态,包括:声音,震动,呼吸灯
//使用DEFAULT_VIBRATE需要设置权限
builder.setDefaults(NotificationCompat.DEFAULT_VIBRATE|NotificationCompat.DEFAULT_SOUND);//可选值NotificationCompat.DEFAULT_xxx
builder.setNumber(5);
//3,创建通知
Notification n = builder.build();
//4,NotificationManager 来进行通知的发送
NotificationManagerCompat managerCompat = NotificationManagerCompat.from(this);
managerCompat.notify(999,n);
}
private int progress;//用于表示进度信息;
private Thread downloadThread;//下载线程,用于刷新通知进度
/**
* 带有进度的通知
* @param view
*/
public void btnSendProgressNotification(View view) {
if(downloadThread==null||!downloadThread.isAlive()){
progress=0;
downloadThread = new Thread(this);
downloadThread.start();
}
}
/*******************************************/
@Override
public void run() {
NotificationManagerCompat managerCompat =
NotificationManagerCompat.from(this);
while(progress<=100){
// 1,NotificationCompat.Builder最后创建
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this);
//2,设置必选属性
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("下载中...")
.setContentText("正在下载");
//可选属性,设置进度 参数1:进度最大值;参数2:当前进度;参数3:不确认的
builder.setProgress(100,progress,false);
//3,创建通知
Notification n = builder.build();
managerCompat.notify(998,n);
progress+=10;
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//managerCompat.cancel(998);//当进度大于100循环退出,可以取消通知
//真是的应用应该是显示一个通知,下载完成
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("下载完成")
.setContentText("打开文件");
//todo 添加通知打开的操作
//设置pendingIntent内部包裹Intent就可以;
Intent intent = new Intent(this,DownloadListActivity.class);
//!!因为这个intent有可能在启动的时候,自身的程序已经退出了
//Activity的任务栈,已经没有,因此需要设置启动标志,来设置
intent.setFlags(
Intent.FLAG_ACTIVITY_CLEAR_TASK//新建任务栈,对于程序退出
|Intent.FLAG_ACTIVITY_CLEAR_TOP //对应程序还在运行的情况
);
//创建PendingIntent的实例
/**
* 参数1:Context
* 参数2:rquestCode 类似于StartActivityForResult
* 参数3:!!Intent用于启动Activity
* 参数4:标志位
*/
PendingIntent pendingIntent = PendingIntent.getActivity(this,888,intent,PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);//设置通知点击的时候设置的操作
Notification n = builder.build();
managerCompat.notify(998,n);
}
}

浙公网安备 33010602011771号