android.app.Notification#InboxStyle ( )源码实例Demo

下面列出了android.app.Notification#InboxStyle ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: AndroidDemo   文件: MainActivity.java
public void inBoxStyle(){
    // 获取系统 通知管理 服务
    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    Notification.Builder builder = new Notification.Builder(this);// 构建 Notification
    builder.setContentTitle("这里是通知的标题~")
            .setSmallIcon(R.drawable.ic_play)
            .setContentText("这里是通知的内容!");
    Notification.InboxStyle inboxStyle = new Notification.InboxStyle();

    inboxStyle.addLine("First line.");// 添加行
    inboxStyle.addLine("Second line");
    inboxStyle.addLine("Third line");
    inboxStyle.addLine("Last line");

    inboxStyle.setBigContentTitle("ContentTitle");// 设置标题以及简介文字
    inboxStyle.setSummaryText("SummaryText");

    builder.setStyle(inboxStyle);
    // 兼容  API 26,Android 8.0
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
        // 第三个参数表示通知的重要程度,默认则只在通知栏闪烁一下
        NotificationChannel notificationChannel = new NotificationChannel("AppTestNotificationId", "AppTestNotificationName", NotificationManager.IMPORTANCE_DEFAULT);
        // 注册通道,注册后除非卸载再安装否则不改变
        notificationManager.createNotificationChannel(notificationChannel);
        builder.setChannelId("AppTestNotificationId");
    }
    // 发出通知
    notificationManager.notify(1, builder.build());
}
 
源代码2 项目: CodenameOne   文件: NotificationCompatJellybean.java
public void addInboxStyle(CharSequence bigContentTitle, boolean useSummary,
        CharSequence summaryText, ArrayList<CharSequence> texts) {
    Notification.InboxStyle style = new Notification.InboxStyle(b)
        .setBigContentTitle(bigContentTitle);
    if (useSummary) {
        style.setSummaryText(summaryText);
    }
    for (CharSequence text: texts) {
        style.addLine(text);
    }
}
 
public static void addInboxStyle(NotificationBuilderWithBuilderAccessor b,
        CharSequence bigContentTitle, boolean useSummary,
        CharSequence summaryText, ArrayList<CharSequence> texts) {
    Notification.InboxStyle style = new Notification.InboxStyle(b.getBuilder())
        .setBigContentTitle(bigContentTitle);
    if (useSummary) {
        style.setSummaryText(summaryText);
    }
    for (CharSequence text: texts) {
        style.addLine(text);
    }
}
 
public void addInboxStyle(CharSequence bigContentTitle, boolean useSummary,
        CharSequence summaryText, ArrayList<CharSequence> texts) {
    Notification.InboxStyle style = new Notification.InboxStyle(b)
        .setBigContentTitle(bigContentTitle);
    if (useSummary) {
        style.setSummaryText(summaryText);
    }
    for (CharSequence text: texts) {
        style.addLine(text);
    }
}
 
源代码5 项目: catnut   文件: UpgradeService.java
private void checkout() throws Exception {
	URL url = new URL(METADATA_URL);
	InputStream inputStream = url.openStream();
	Scanner in = new Scanner(inputStream).useDelimiter("\\A");
	if (in.hasNext()) {
		JSONObject metadata = new JSONObject(in.next());
		PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0);
		if (info.versionCode < metadata.optInt(FIELD_VERSION_CODE)) {
			Notification.InboxStyle style = new Notification.InboxStyle(mBuilder);
			String size = metadata.optString("size");
			style.setBigContentTitle(getString(R.string.find_new_version, size));
			JSONArray messages = metadata.optJSONArray("messages");
			for (int i = 0; i < messages.length(); i++) {
				style.addLine(messages.optString(i));
			}
			// download&upgrade intent
			Intent download = new Intent(this, UpgradeService.class);
			download.setAction(ACTION_DOWNLOAD);
			download.putExtra(DOWNLOAD_LINK, metadata.optString(DOWNLOAD_LINK));
			PendingIntent piDownload = PendingIntent.getService(this, 0, download, 0);
			mBuilder.addAction(R.drawable.ic_stat_download_dark, getString(R.string.down_load_and_upgrade), piDownload);
			// dismiss notification
			Intent dismiss = new Intent(this, UpgradeService.class);
			dismiss.setAction(ACTION_DISMISS);
			PendingIntent piDismiss = PendingIntent.getService(this, 0, dismiss, 0);
			mBuilder.addAction(R.drawable.ic_stat_content_remove_dark, getString(R.string.not_upgrade_now), piDismiss);
			// show it.
			mBuilder.setTicker(getString(R.string.find_new_version));
			mNotificationManager.notify(ID, mBuilder.setDefaults(Notification.DEFAULT_ALL).build());
		} else {
			new Handler(Looper.getMainLooper()).post(new Runnable() {
				@Override
				public void run() {
					Toast.makeText(UpgradeService.this, getString(R.string.already_updated), Toast.LENGTH_SHORT).show();
				}
			});
		}
	}
	in.close();
}
 
源代码6 项目: guideshow   文件: NotificationCompatJellybean.java
public void addInboxStyle(CharSequence bigContentTitle, boolean useSummary,
        CharSequence summaryText, ArrayList<CharSequence> texts) {
    Notification.InboxStyle style = new Notification.InboxStyle(b)
        .setBigContentTitle(bigContentTitle);
    if (useSummary) {
        style.setSummaryText(summaryText);
    }
    for (CharSequence text: texts) {
        style.addLine(text);
    }
}
 
源代码7 项目: PowerFileExplorer   文件: DataTrackerService.java
private synchronized void initiateUpdate() {
		mBuilder.setContentTitle("Data traffic");
//		String.format("↓%[email protected]%s%s, ↑%[email protected]%s%s, ⇅%[email protected]%s%s", 
//											   Formatter.formatFileSize(getApplicationContext(), totalRxSincePrev), 
//											   Util.nf.format(rateTotalRxSincePrev), 
//											   unitTypeArr[unitType], 
//											   Formatter.formatFileSize(getApplicationContext(), totalTxSincePrev), 
//											   Util.nf.format(rateTotalTxSincePrev), 
//											   unitTypeArr[unitType],
//											   Formatter.formatFileSize(getApplicationContext(), (totalRxSincePrev + totalTxSincePrev)),
//											   Util.nf.format(rateTotalRxSincePrev + rateTotalTxSincePrev),
//											   unitTypeArr[unitType]));
		if (rateTotalTxSincePrev == 0 && rateTotalRxSincePrev == 0) {
			mBuilder.setSmallIcon(android.R.drawable.ic_menu_more);
		} else if (rateTotalTxSincePrev == 0 && rateTotalRxSincePrev > 0) {
			mBuilder.setSmallIcon(android.R.drawable.stat_sys_download);
		} else if (rateTotalTxSincePrev > 0 && rateTotalRxSincePrev == 0) {
			mBuilder.setSmallIcon(android.R.drawable.stat_sys_upload);
		} else if (rateTotalTxSincePrev > 0 && rateTotalRxSincePrev > 0) {//1307 bytes is equal to .1Mbit
			mBuilder.setSmallIcon(android.R.drawable.ic_notification_overlay);
		}
		
		final Notification.InboxStyle big = new Notification.InboxStyle();
		big.addLine(String.format("↓%[email protected]%s%s", 
								  Formatter.formatFileSize(getApplicationContext(), totalRxSincePrev), 
								  Util.nf.format(rateTotalRxSincePrev), 
								  unitTypeArr[unitType]));
		big.addLine(String.format("↑%[email protected]%s%s", 
								  Formatter.formatFileSize(getApplicationContext(), totalTxSincePrev), 
								  Util.nf.format(rateTotalTxSincePrev), 
								  unitTypeArr[unitType]));
		big.addLine(String.format("⇅%[email protected]%s%s", 
								  Formatter.formatFileSize(getApplicationContext(), (totalRxSincePrev + totalTxSincePrev)),
								  Util.nf.format(rateTotalRxSincePrev + rateTotalTxSincePrev),
								  unitTypeArr[unitType]));
//		long rateRxSincePrev;
//		long rateTxSincePrev;
//		final Context applicationContext = getApplicationContext();
//		final int gap = pollRate * 1000 / appStatsList.size();
//		for (AppStats appStat : appStatsList) {
//			rateRxSincePrev = appStat.bytesRxSincePrev * 1000000 / (appStat.elapsedTimeSincePrev / 1000);
//			rateTxSincePrev = appStat.bytesTxSincePrev * 1000000 / (appStat.elapsedTimeSincePrev / 1000);
//			if (unitType > 3) {
//				rateRxSincePrev = (rateRxSincePrev >> (10 * (unitType - 4)));
//				rateTxSincePrev = (rateTxSincePrev >> (10 * (unitType - 4)));
//			} else {
//				rateRxSincePrev = ((rateRxSincePrev >> (10 * unitType)) << 3);
//				rateTxSincePrev = ((rateTxSincePrev >> (10 * unitType)) << 3);
//			}
//			big.addLine(String.format("%s\n↓%[email protected]%s%s, ↑%[email protected]%s%s, ⇅%[email protected]%s%s", 
//									  appStat.name,
//									  Formatter.formatFileSize(applicationContext, appStat.bytesRxSincePrev), 
//									  Util.nf.format(rateRxSincePrev), 
//									  unitTypeArr[unitType], 
//									  Formatter.formatFileSize(applicationContext, appStat.bytesTxSincePrev), 
//									  Util.nf.format(rateTxSincePrev), 
//									  unitTypeArr[unitType],
//									  Formatter.formatFileSize(applicationContext, (appStat.bytesRxSincePrev + appStat.bytesTxSincePrev)),
//									  Util.nf.format(rateRxSincePrev + rateTxSincePrev),
//									  unitTypeArr[unitType]));
//			try {
//				Thread.sleep(gap);
//			} catch (InterruptedException e) {}
//		}
		mNotifyMgr.notify(mNotificationId, mBuilder.setStyle(big).build());
    }
 
源代码8 项目: movim_android   文件: MainActivity.java
@JavascriptInterface
public void showNotification(String title, String body, String picture, String action) {
	Bitmap pictureBitmap = getBitmapFromURL(picture);

	Intent i = new Intent(this, MainActivity.class);
	if (action != null) {
		i.setAction(action);
		i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
	}
	PendingIntent pi = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);

	// The deleteIntent declaration
	Intent deleteIntent = new Intent(action);
	PendingIntent pendingDeleteIntent = PendingIntent.getBroadcast(this, 0, deleteIntent,
			PendingIntent.FLAG_UPDATE_CURRENT);
	registerReceiver(receiver, new IntentFilter(action));

	// Integer counter;
	List<String> messages = null;

	// There is already pending notifications
	if (this.notifs.get(action) != null) {
		messages = this.notifs.get(action);
	} else {
		messages = new ArrayList<String>();
	}

	messages.add(body);

	if (messages.size() > 5) {
		messages.remove(0);
	}

	this.notifs.put(action, messages);

	// We create the inbox
	Notification.InboxStyle style = new Notification.InboxStyle();
	for (int j = 0; j < messages.size(); j++) {
		style.addLine(messages.get(j));
	}

	style.setBigContentTitle(title);

	Notification notification = new Notification.Builder(this).setSmallIcon(R.drawable.ic_stat_name)
			.setLargeIcon(pictureBitmap).setContentTitle(title).setContentText(body).setContentIntent(pi)
			.setDeleteIntent(pendingDeleteIntent).setAutoCancel(true).setColor(Color.parseColor("#3F51B5"))
			.setLights(Color.parseColor("#3F51B5"), 1000, 5000).setNumber(messages.size()).setStyle(style)
			.setGroup("movim").build();

	NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
	notificationManager.notify(action, 0, notification);
}
 
源代码9 项目: ploggy   文件: PloggyService.java
private void updateNotification(List<Data.AnnotatedMessage> newMessages) {
    // Max, as per documentation: http://developer.android.com/reference/android/app/Notification.InboxStyle.html
    final int MAX_LINES = 5;

    // Invoke main Activity when notification is clicked
    Intent intent = new Intent(this, ActivityMain.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    int iconResourceId;
    String contentTitle;
    if (newMessages != null && newMessages.size() > 0) {
        intent.setAction(ActivityMain.ACTION_DISPLAY_MESSAGES);
        iconResourceId = R.drawable.ic_notification_with_new_messages;
        contentTitle =
                getResources().getQuantityString(
                    R.plurals.foreground_service_notification_content_title_with_new_messages,
                    newMessages.size(),
                    newMessages.size());
    } else {
        intent.setAction("android.intent.action.MAIN");
        iconResourceId = R.drawable.ic_notification_without_new_messages;
        contentTitle = getString(R.string.foreground_service_notification_content_title_without_new_messages);
    }

    PendingIntent pendingIntent =
        PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification.Builder notificationBuilder =
        new Notification.Builder(this)
            .setContentIntent(pendingIntent)
            .setContentTitle(contentTitle)
            .setSmallIcon(iconResourceId);

    Notification notification;
    if (newMessages != null && newMessages.size() > 0) {
        // Use default (system) sound, lights, and vibrate
        notificationBuilder.setDefaults(Notification.DEFAULT_ALL);

        // Build email-style big view with summary of new messages
        Notification.InboxStyle inboxStyleBuilder =
            new Notification.InboxStyle(notificationBuilder);
        for (int i = 0; i < MAX_LINES && i < newMessages.size(); i++) {
            inboxStyleBuilder.addLine(
                Html.fromHtml(
                    getString(
                        R.string.foreground_service_notification_inbox_line,
                        newMessages.get(i).mPublicIdentity.mNickname,
                        newMessages.get(i).mMessage.mContent)));
        }
        if (newMessages.size() > MAX_LINES) {
            inboxStyleBuilder.setSummaryText(
                getString(
                    R.string.foreground_service_notification_inbox_summary,
                    newMessages.size() - MAX_LINES));
        }
        notification = inboxStyleBuilder.build();
    } else {
        notification = notificationBuilder.build();
    }

    if (mNotification == null) {
        mNotification = notification;
    }
    else {
        // TODO: if other notification attributes are added (ie ticker), copy them here
        mNotification.contentIntent = notification.contentIntent;
        mNotification.bigContentView = notification.bigContentView;
        mNotification.contentView = notification.contentView;
        mNotification.icon = notification.icon;
        mNotification.largeIcon = notification.largeIcon;
        mNotification.defaults = notification.defaults;
    }
}