1. 创建一个工具类,提供showNotification和removeNotification两个方法
package com.example.notification.util;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
import com.example.notification.R;
public class CommonUtil {
public static final int NOTIFI_VERSION_UPDATE_ID = 0;
public static void showNotification(Context context, String notifiText) {
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification();
notification.flags = Notification.FLAG_ONGOING_EVENT;
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_LIGHTS;
notification.icon = R.drawable.ic_launcher;
notification.tickerText = context.getString(R.string.STR_VERSION_UPDATE);
RemoteViews contentView = new RemoteViews(context.getPackageName(),
R.layout.notification);
contentView.setImageViewResource(R.id.image, R.drawable.ic_launcher);
contentView.setTextViewText(R.id.text, notifiText);
notification.contentView = contentView;
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent("android.settings.SETTINGS"), 0);
notification.contentIntent = contentIntent;
mNotificationManager.notify(NOTIFI_VERSION_UPDATE_ID, notification);
}
public static void removeNotification(Context context, int notificationID) {
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancel(notificationID);
}
}
2. 新建该通知布局文件layout/notification.xml
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/image"
android:textColor="@color/text_color_white" />
<ProgressBar
android:id="@+id/progress_horizontal"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/text"
android:layout_toRightOf="@+id/image"
android:max="100"
android:progress="50"
android:secondaryProgress="75" />
</RelativeLayout>
3. 在需要发出通知的地方,调用工具类中的相应方法
<pre name="code" class="java"><pre name="code" class="java">package com.example.notification;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import com.example.notification.util.CommonUtil;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CommonUtil.showNotification(MainActivity.this,
getString(R.string.STR_NOTIFICATION_TEXT));
}
@Override
protected void onStop() {
super.onStop();
CommonUtil.removeNotification(getApplicationContext(), CommonUtil.NOTIFI_VERSION_UPDATE_ID);
}
}