Android 原生通知Notification 写法

Notification

是个进程间的通讯

手机状态栏的提示.出现在桌面通知栏里,他不在我们的App里,而是由SystemUI进程显示的提示.所以让另外一个系统的进程SystemUI帮我们显示一个通知栏提醒.

不多说上代码

属性配置

 <uses-permission android:name="android.permission.VIBRATE" />

主要代码


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button button;
    private Button button2;
    private NotificationManager notificationManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }
    private void initView() {
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
        button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(this);
    }

    /**
     * 让另外一个系统的进程SystemUI帮我们显示一个通知栏提醒
     * 进程间的通讯
     *
     * @param v
     */
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button:
                //进程间通信.主要是把一个动作交给另外一个应用程序来做的意图,就用PendingIntent包裹一下.
                //pendingIntent,可以打开一个四大组件,用其静态方法,get....
                //getActivity,1 上下文,2 请求码用不到就为0,3 意图对象,4 指定其点击后的状态标识
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel://110"));
//                Intent intent = new Intent(this,JumpActivity.class);//跳转到指定的Activity,不用StartActivity.
                PendingIntent pendingIntent=  PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
                //获取系统的通知服务,上面的Intent操作就是用户点击通知栏时,自动进入拨号界面,
                notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                //直接new出来,该方式在安卓3.0以后已经过时了
//                Notification notification=new Notification();
    //使用链式调用的方法,创建Notification对象的同时往里面进行设置,是主流的创建方式,Builder的参数是上下文.
                Notification notification = new Notification.Builder(this)
                        //设置通知栏的标题
                        .setContentTitle("你中奖啦")
                        //设置通知栏的通知内容
                        .setContentText("快来110 去领取!!!")
                        //设置通知栏的图片(就是通知一来,在显示电量那一行出现的小图标)
                        .setSmallIcon(R.mipmap.ic_launcher)
                        //设置通知栏的大图片(就是通知栏拉下来显示的图标)
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                        //设置通知栏被点击后会执行的意图(比如跳转到指定的activity,比如打电话等等)
                        .setContentIntent(pendingIntent)
                        //当通知栏提示被点击执行时,通知栏会消失在桌面,不设置此方法,默认通知栏提示被点击后依然存在.所以必用此方法.
                        .setAutoCancel(true)
//                        .setSound(Uri.parse("")) //设置通知栏提示到来时的声音是什么.
                        //设置当通知栏提示到来时,手机每一次震动的时长.使用此功能记着加权限.<uses-permission android:name="android.permission.VIBRATE"/>
//                        .setVibrate(new long[]{100,200,300}) //不设置没有震动
                        // 使用系统默认声音,震动,led灯等设置
//                        .setDefaults(Notification.DEFAULT_ALL)
                        .build();
                //FLAG_NO_CLEAR 使通知栏提示取消不掉,一直存在.   FLAG_Auto_CLEAR 通知栏提示只要被点击一次就不会存在.
                notification.flags=Notification.FLAG_NO_CLEAR;
                //让通知显示在状态栏里.参数1,给通知起的ID,方便对其单独的操作(比如用cancel把指定通知取消掉) 参数2,就是Notification对象.
                notificationManager.notify(1, notification);
                break;
            case R.id.button2:
                //使用NotificationManager对象,取消掉指定int标识的通知提示.
                notificationManager.cancel(1);
                break;
        }


    }




}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值