实现步骤:
-----------------------------------------------------------------------------------------------------------------------------------------------------------
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);
}
}
效果: