編輯:關於Android編程
Android通知(Notification)詳解,最近項目用到了安卓下的Notification,也就是通知。今天我們就通過一個列子來了解一下android下的Notification,首先是先看怎麼使用Notification。
其實發送一個通知到通知欄特別簡單
private void showNotification(int id, String title, String data) {
Intent broadcastIntent = new Intent(this, NotificationReceiver.class); // 設置一個廣播接收者去打開要做的事情
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, id, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle(title) // 設置通知標題
.setContentText(data) // 設置通知內容
.setContentIntent(pendingIntent) // 設置點擊通知消息的action
.setSmallIcon(R.drawable.pushsmall) // 設置通知欄顯示的小圖標,國產手機一般不顯示,默認是用大圖標來代替
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)) // 設置通知欄顯示的大圖標
.setAutoCancel(true); // 點擊通知消息後通知消息消失
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(id, mBuilder.build());
}
廣播接收者NotificationReceiver的代碼
public class NotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//判斷app進程是否存活
if (isAppAlive(context, "com.bandeng.temp")) {
Intent startIntent = new Intent(context, PushActivity.class);
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
} else {
Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage("com.bandeng.temp");
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
Intent detailIntent = new Intent(context, PushActivity.class);
Intent[] intents = {launchIntent, detailIntent};
context.startActivities(intents);
}
}
private boolean isAppAlive(Context context, String packageName) {
boolean isAppRunning = false;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List list = am.getRunningTasks(100);
for (ActivityManager.RunningTaskInfo info : list) {
if (info.topActivity.getPackageName().equals(packageName) && info.baseActivity.getPackageName().equals(packageName)) {
isAppRunning = true;
break;
}
}
return isAppRunning;
}
}
看效果

關於通知欄消息我們需要注意一點,就是在android5.0之後setSmallIcon()設置小圖標,如果這個小圖標不是背景透明色,小圖標就會出現整個白色,上面演示的通知欄小圖標的背景是透明的,所以不會出現小白點。下面我就演示將小圖標設置成背景不是透明色的大圖標
小圖標設置為大圖標
mBuilder.setSmallIcon(R.drawable.ic_launcher)
看下面效果

其實在國產手機上一般是沒有問題的,因為國產手機的系統被修改過,一般用大圖標代替小圖標
Android中Sqlite的使用及性能優化
1.寫在前面的話今天我們來學習Android中如何使用Sqlite以及性能優化。2.Android平台下數據庫相關類SQLiteOpenHelper 抽象類:通過從此類繼
安卓手機郵箱設置教程 教您如何使用手機接收郵件
一、電腦上的設置首先,想要在手機上創建你的郵箱賬戶,就得先將此賬戶在電腦上進行一定的設置,就拿QQ郵箱來說(其他郵箱同例):第一步,在電腦上登陸你的QQ郵箱
Android自定義控件之創建可復用的組合控件
前面已學習了一種自定義控件的實現,是Andriod 自定義控件之音頻條,還沒學習的同學可以學習下,學習了的同學也要去溫習下,一定要自己完全的掌握了,再繼續學習,貪多嚼不爛
android 對話框彈出位置和透明度的設置具體實現方法
例如,屏幕的上方或下方。要實現這種效果。就需要獲得對話框的Window對象,獲得這個Window對象有多種方法。最容易的就是直接通過AlertDialog類的getWin