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