浅学Notification/PendingIntent

构造Notification关键步骤:1.首先用到Notification和 NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

2.还需要      Notification.Builder builder = new Notification.Builder(MainActivity.this);通过manager 来获取  利用manager将通知显示出来
                具体方法:manager.notify(100,notification);

3.通过一个  manager.cancel(100);这个方法来取消通知栏显示;



public class MainActivity extends AppCompatActivity {
    private Button defaultstyle;
    private Button cancle;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        defaultstyle = (Button) findViewById(R.id.default_style);
        cancle = (Button) findViewById(R.id.cancel_notification);
        defaultstyle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                获取 NotificationManager 的对象,需要创建一个manager
                NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//               Builder的对象,设置属性
//                Notification.Builder builder = new Notification.Builder(MainActivity.this);
                NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
//                设置大图标->
//                创建一个Bitmap
                Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
                builder.setLargeIcon(bitmap);
//                设置状态栏消息提示
                builder.setTicker("收到一条通知");
//               设置通知标题
                builder.setContentTitle("蓝鸥紧急通知");
//                设置通知内容
                builder.setContentText("今天下暴雨,你不用来上课啦");
//                设置小图标
                builder.setSmallIcon(R.mipmap.ic_launcher);
//                设置系统提供的系统时间
                builder.setWhen(System.currentTimeMillis());
//                builder.setAutoCancel(true);
//                设置默认指示灯
                builder.setDefaults(Notification.DEFAULT_LIGHTS);
//                设置默认铃声
                builder.setDefaults(Notification.DEFAULT_SOUND);
//                设置默认振动
                builder.setDefaults(Notification.DEFAULT_VIBRATE);
//                *注意:指示灯和振动都需要权限->需要在清单文件中注册一下权限!
//                builder.setDefaults(Notification.DEFAULT_ALL);==DEFAULT_ALL这个常量就代表所有的默认提示
                Intent intent = new Intent(MainActivity.this, ResultActivity.class);
//                                                        参数1:传递上下文对象 ; 参数2:传一个请求码(状态码); 参数3:一个intent; 参数4:通知与页面的更新类型;
                PendingIntent pendingIntent =  PendingIntent.getActivity(MainActivity.this, 1000, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                //                 设置点击之后的意图也就是响应事件(设置这一步setContentIntent(这里需要的参数是pendingIntent,
                // 这就需要我们构造一个pendingIntent),pendingIntent可以通过".getActivity(这里有4个参数)"+还需要一个普通的Intent)
                builder.setContentIntent(pendingIntent);
//  ---------------------------------------------------------------------------
//       --------------------设置自定义通知---------------------
//               2.1 创建Removeviews的对象
                RemoteViews views = new RemoteViews(getPackageName(), R.layout.notification);
//                2.2设置RemoteViews属性
                views.setTextViewText(R.id.Title,"喜马拉雅");
                views.setTextViewText(R.id.txt,"喜马拉雅啦啦啦啦啦");


                builder.setContent(views);
//                -------------------------------
//                2.2.1设置自定义的点击事件
                Intent intent1 = new Intent(MainActivity.this, ResultActivity.class);
                PendingIntent pendingIntent1 = pendingIntent.getActivity(MainActivity.this, 100, intent1, pendingIntent.FLAG_UPDATE_CURRENT);
                views.setOnClickPendingIntent(R.id.mbntinfo,pendingIntent1);
//              通过“builder.build();”这个方法来获取到Notifaition;
                Notification notification = builder.build();
//              利用manager将通知显示出来
                manager.notify(100,notification);
//              manager.notify(101,notification);
            }
        });
        cancle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                1.拿到manager
                NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//                取消所有通知
                  manager.cancelAll();
//                定向取消指定通知,根据id号(100)来确定要取消的指定通知
//                manager.cancel(100);
//                manager.cancel(101);
            }
        });
    }
}

你可能感兴趣的:(初级学习类)