目标效果:
图一为程序运行的控件页面,点击发送通知按钮,图二的最上方推送一条hello信息,滑下可以看到通知栏通知这条信息,点击取消通知可以将已经推送的信息删除。
1.activity_main.xml页面放置Button控件。
activity_main.xml页面:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <Button android:id="@+id/btnSend" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="发送通知" /> <Button android:id="@+id/btnCancel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="取消通知" /> </LinearLayout> </RelativeLayout>
package com.example.notification; import android.os.Bundle; import android.app.Activity; import android.app.Notification; import android.app.Notification.Builder; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener{ private Button btnSend,btnCancel; private NotificationManager manager;//通知控制类 int notification_id;//定义intification的id @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); getId();//获取控件id click();//按钮绑定点击事件 } /*获取控件id*/ private void getId() { btnSend=(Button) findViewById(R.id.btnSend); btnCancel=(Button) findViewById(R.id.btnCancel); } /*按钮绑定点击事件*/ private void click() { btnSend.setOnClickListener(this); btnCancel.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View view) { switch(view.getId()){ case R.id.btnSend://点击发送通知 sendNotification(); break; case R.id.btnCancel://点击取消通知 manager.cancel(notification_id); break; } } /*构造notification并发送到通知栏*/ private void sendNotification(){ Intent intent=new Intent(this,MainActivity.class);//启动Activity PendingIntent pintent=PendingIntent.getActivity(this,0,intent, 0); Builder builder=new Notification.Builder(this);//实例Notification并传递上下文信息 builder.setSmallIcon(R.drawable.ic_launcher);//设置图标 builder.setTicker("hello");//手机状态栏提示 builder.setWhen(System.currentTimeMillis());//拖拽后显示的时间,为当前系统时间 builder.setContentTitle("通知栏通知");//设置标题 builder.setContentText("这里是具体内容");//设置具体内容 builder.setContentIntent(pintent);//设置点击后的意图 // builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音 // builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯(需要权限) // builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动(需要权限) builder.setDefaults(Notification.DEFAULT_ALL);//包括声音,指示灯,震动 Notification notification=builder.build();//获取Notification manager.notify(notification_id,notification);//发送通知到通知栏 } }
// builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音 // builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯(需要权限) // builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动(需要权限)