Notification是显示在手机状态栏的通知,它代表一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification。
在小米手机上,手指在屏幕顶端向下划,可以看到这个通知内容。
package allegro.notificationtest; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { static final int NOTIFICATION_ID = 0x123; NotificationManager nm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); nm=(NotificationManager) getSystemService(NOTIFICATION_SERVICE); } public void send(View source) { Intent intent=new Intent(MainActivity.this,OtherActivity.class); PendingIntent pi= PendingIntent.getActivity(MainActivity.this,0,intent,0); Notification notify = new Notification.Builder(this) .setAutoCancel(true) // 设置显示在状态栏的通知提示信息 .setTicker("有新消息") // 设置通知的图标 .setSmallIcon((R.drawable.java)) // 设置通知内容的标题 .setContentTitle("一条新通知") // 设置通知内容 .setContentText("恭喜你,你中奖了!") // 设置使用系统默认的声音、默认LED灯 // .setDefaults(Notification.DEFAULT_SOUND // |Notification.DEFAULT_LIGHTS) // 设置通知的自定义声音 // .setSound(Uri.parse("android.resource://org.crazyit.ui/" // + R.raw.msg)) .setWhen(System.currentTimeMillis()) // 设改通知将要启动程序的Intent .setContentIntent(pi) //设置事件信息,这里启动intent对应的程序。
.build(); nm.notify(NOTIFICATION_ID,notify); } public void del(View v) { nm.cancel(NOTIFICATION_ID); } }
点击发送按钮后,划开通知栏点击通知,执行启动OtherActivity程序
另外,AndroidManifest.xml文件中声明权限。因为程序要访问闪光灯,振动器。
<!-- 添加操作闪光灯的权限 --> <uses-permission android:name="android.permission.FLASHLIGHT"/> <!-- 添加操作振动器的权限 --> <uses-permission android:name="android.permission.VIBRATE"/>