Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android通知(Notification)詳解

Android通知(Notification)詳解

編輯:關於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. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved