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); } }