Notification的应用
以前零零散散的学Android,回头一看啥都记不得了,心若在,梦就在,只不过是从头再来~这回好好慢慢的记录吧,学着慢点,忘得也慢啊最好。
Notification,也就是手机上的通知栏,发送通知给手机。
下面介绍
Notification类。android.app.Notification
这个类表述了如何使用NotificationManager类向用户展示一个持久化的通知。该类用于存放标题、内容、图标、以及发送的目标对象。
Notification notif = new Notification();
此类常用的属性有:
icon :通知的图标 notif.icon = R.drawable.android_launcher
tickerText : 通知的标题
flags:设置通知状态的标志值。
defaults:设置通知的默认属性,包括声音,震动,闪光提示。
contentIntent:存放一个PendingIntent类型的对象。点击通知的时候,才启动intent中的目标对象。
PendingIntent用于描述Intent及其最终行为。此对象可以递交给其他应用程序,然后继续处理,这样可稍后处理PendingIntent中描述的Intent及其最终行为。
常用方法:
1、public static PendingIntent getActivity(Context context , int requestCode , Intent intent , int flags);
从系统中取得一个用去启动目标Activity的PendingIntent对象。
flags: FLAG_CANCEL_CURRENT: 关闭当前的PendingIntent,新建一个pendingIntent。
FLAG_UPDATE_CURRENT: 更行当前PendingIntent对象中的数据。
默认为0即可
2、public static PendingIntent getService(Context context , int requestCode , Intent intent , int flags);
3、public static PendingIntent getBroadcast(Context context , int requestCode , Intent intent , int flags);
实例:
设置一个按钮,点击按钮发送一条通知:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/btnSendNotification" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送通知" /> </RelativeLayout>
package com.example.notificationdemo; import android.os.Bundle; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setListener(); } private void setListener() { findViewById(R.id.btnSendNotification).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //创建启动secondActivity的Intent对象。 Intent intent = new Intent(MainActivity.this,SecondActivity.class); //创建PendingIntent对象。 PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); //创建Notification对象。 Notification notif = new Notification(R.drawable.ic_launcher, "通知来了",System.currentTimeMillis()); //设置点击通知的监听 notif.setLatestEventInfo(MainActivity.this, "您有软件需要更新", "点击更新", pi); //创建通知管理器对象。 NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //发送通知。 manager.notify(99, notif); } }); } }
设置了一个secondActivity,只对应一个点击通知内容后要显示的页面,测试PendingIntent。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".SecondActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="您点击了通知!" /> </RelativeLayout>