package net.oschina.gitapp.ui;
import net.oschina.gitapp.AppContext;
import net.oschina.gitapp.R;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
/**
* 通知信息广播接收器
* @author liux (http://my.oschina.net/liux)
* @version 1.0
* @created 2012-4-16
*/
public class BroadCast extends BroadcastReceiver {
private final static int NOTIFICATION_ID = R.layout.activity_main;
private static int lastNoticeCount;
@Override
public void onReceive(Context context, Intent intent) {
String ACTION_NAME = intent.getAction();
if("net.oschina.gitapp.action.APPWIDGET_UPDATE".equals(ACTION_NAME))
{
int count = intent.getIntExtra("count", 0);
//通知栏显示
this.notification(context, count);
}
}
@SuppressWarnings("deprecation")
private void notification(Context context, int noticeCount){
//创建 NotificationManager
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
String contentTitle = "Git@OSC";
String contentText = "您有 " + noticeCount + " 条最新信息";
int _lastNoticeCount;
//判断是否发出通知信息
if(noticeCount == 0)
{
notificationManager.cancelAll();
lastNoticeCount = 0;
return;
}
else if(noticeCount == lastNoticeCount)
{
return;
}
else
{
_lastNoticeCount = lastNoticeCount;
lastNoticeCount = noticeCount;
}
//创建通知 Notification
Notification notification = null;
if(noticeCount > _lastNoticeCount)
{
String noticeTitle = "您有 " + (noticeCount-_lastNoticeCount) + " 条最新信息";
notification = new Notification(R.drawable.icon_logo, noticeTitle, System.currentTimeMillis());
}
else
{
notification = new Notification();
}
//设置点击通知跳转
Intent intent = new Intent(context, NotificationActivity.class);
intent.putExtra("NOTICE", true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
//设置最新信息
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
//设置点击清除通知
notification.flags = Notification.FLAG_AUTO_CANCEL;
if(noticeCount > _lastNoticeCount)
{
//设置通知方式
notification.defaults |= Notification.DEFAULT_LIGHTS;
//设置通知音-根据app设置是否发出提示音
if(((AppContext)context.getApplicationContext()).isAppSound())
notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.notificationsound);
//设置振动 <需要加上用户权限android.permission.VIBRATE>
//notification.vibrate = new long[]{100, 250, 100, 500};
}
//发出通知
notificationManager.notify(NOTIFICATION_ID, notification);
}
}