[安卓开发基础] Notification 显示通知

 实现步骤:

----------------------------------------------------------------------------------------------------------------------------------------------------------- 

 Intent 是及时启动,intent 随所在的activity 消失而消失。 
PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行 pendingintent时,调用intent的。正由于pendingintent中 保存有当前App的Context,使它赋予外部App一种能力,使得外部App可以如同当前App一样的执行pendingintent里的 Intent, 就算在执行时当前App已经不存在了,也能通过存在pendingintent里的Context照样执行Intent。另外还可以处理intent执行后的操作。常和alermanger 和notificationmanager一起使用。 
Intent一般是用作Activity、Sercvice、BroadcastReceiver之间传递数据,而Pendingintent,一般用在 Notification上,可以理解为延迟执行的intent,PendingIntent是对Intent一个包装。 
--------------------- 
作者:笑对生活_展望未来 
来源:CSDN 
原文:https://blog.csdn.net/zeng622peng/article/details/6180190 
版权声明:本文为博主原创文章,转载请附上博文链接!

-----------------------------------------------------------------------------------------------------------------------------

xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/notifiy_background"
    tools:context="com.zengjx.androidbaseproject.NotificationActivity">

</android.support.constraint.ConstraintLayout>
package com.zengjx.androidbaseproject;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class NotificationActivity extends AppCompatActivity {
      final     int    NOTIFIDED=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notification);
        //创建 并且通知
        NotificationManager     notificationManager  =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        //创建一个通知对象
        //  Notification.Builder    notification =new Notification.Builder(NotificationActivity.this);
        Notification.Builder notification = new Notification.Builder(this); // 创建一个Notification对象
          //设置属性
        // 设置打开该通知,该通知自动消失
          notification.setAutoCancel(true);//点击后 会自动消失。
           notification.setSmallIcon(R.drawable.packet);//消息标志图片
           notification.setContentText("点击查看详情");//设置内容
           notification.setContentTitle("奖励百万红包");//设置标题
           notification.setWhen(System.currentTimeMillis());//设置发送时间,通知的时间,一般为系统时间,也可以使用setWhen()设置
           notification.setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE);//默认声音
           //intent英文意思是意图,pending表示即将发生或来临的事情。 
           //PendingIntent这个类用于处理即将发生的事情。比如在通知Notification中用于跳转页面,但不是马上跳转。 
        Intent    intent   =new Intent(NotificationActivity.this,NotificationDetailActivity.class);
        PendingIntent    pendingIntent  =PendingIntent.getActivity(NotificationActivity.this,0,intent,0);
        notification.setContentIntent(pendingIntent);//设置通知栏跳转
        notificationManager.notify(NOTIFIDED,notification.build());
    }
}

详细页面:

xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/img"
    tools:context="com.zengjx.androidbaseproject.NotificationDetailActivity">

</android.support.constraint.ConstraintLayout>
package com.zengjx.andro:idbaseproject;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class NotificationDetailActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notificationdetail);
    }
}

效果:

 

猜你喜欢

转载自blog.csdn.net/oDianZi1234567/article/details/85614919
今日推荐