Francis 的Notification学习之旅二

 

1.PaddingIntent与Intent的区别;

2.Notification的使用。

 

一、Intent和PendingIntent的区别

a. Intent是立即使用的,而PendingIntent可以等到事件发生后触发,PendingIntent可以cancel
b. Intent在程序结束后即终止,而PendingIntent在程序结束后依然有效
c. PendingIntent自带Context,而Intent需要在某个Context内运行
d. Intent在原task中运行,PendingIntent在新的task中运行

 

 

二、Notification的使用

高版本通常使用Notification.builder来建立。

代码参考:

 

package cqmu.francisteam.com.myapplication;

import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {


    private Button button;
    private NotificationManager manager;
    private Notification.Builder builder;
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        builder = new Notification.Builder(this);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, MainActivity.class);
                PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
                builder.setContentIntent(contentIntent);
                builder.setContentTitle("new notification is coming");
                builder.setContentText("hello world");
                builder.setSmallIcon(R.drawable.launcher);
                Notification notification = builder.build();
                manager.notify(1000, notification);

            }
        });
    }
}

 

 

说明:DEFAULT_VIBRATE默认的震动需要注册权限到manifest,<uses-permission android:name = "android.permission.VIBRATE"/>

闪光灯也需要如同上述操作