String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.ic_notification_icon;
android.app.Notification.Builder nbuilder = new Notification.Builder(this);
nbuilder.setContentTitle(getString(R.string.notifcation_title,mProfile.mName));
nbuilder.setContentText(msg);
nbuilder.setOnlyAlertOnce(true);
nbuilder.setOngoing(true);
nbuilder.setSmallIcon(icon,level.level);
如何隐藏或完全删除smallIcon?我试图不使用nbuilder.setSmallIcon,但结果是通知根本没有显示!
答案 0 :(得分:17)
在Jelly Bean上,稍后您可以使用nbuilder.setPriority(Notification.PRIORITY_MIN)
;此优先级的确切解释由系统UI决定,但在AOSP中,这会导致隐藏通知的图标。
这适用于不需要引起用户注意的“环境”或“背景”信息,但如果用户恰好在通知面板上戳,她可能会感兴趣。有关如何最好地使用通知优先级的详细信息,请参阅Notifications section of the Android Design site。
答案 1 :(得分:9)
更新:请勿在Android 7上使用它,它正在崩溃
使用反射,这里有一些在Lollipop(模拟器和Moto G设备)和Marshmallow(模拟器)中工作的东西
Notification notification = NotificationCompat.Builder.blabla().build();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int smallIconViewId = context.getResources().getIdentifier("right_icon", "id", android.R.class.getPackage().getName());
if (smallIconViewId != 0) {
if (notification.contentIntent != null)
notification.contentView.setViewVisibility(smallIconViewId, View.INVISIBLE);
if (notification.headsUpContentView != null)
notification.headsUpContentView.setViewVisibility(smallIconViewId, View.INVISIBLE);
if (notification.bigContentView != null)
notification.bigContentView.setViewVisibility(smallIconViewId, View.INVISIBLE);
}
}
我找不到更好的方法。
这可能会在他们更改视图ID或更改Notification中的任何RemoteViews字段时停止工作,因此使用风险由您自行承担。
答案 2 :(得分:3)
你不能这样做......没有setSmallIcon(icon,level.level);
通知没有显示..
答案 3 :(得分:0)
您可以设置不带图标的自己的布局:
RemoteViews notificationView = new RemoteViews(
context.getPackageName(),
R.layout.notify
);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContent(notificationView)
答案 4 :(得分:0)
尝试添加此行的“通知”构建器
.setPriority(Notification.PRIORITY_MIN)
所以你的通知将是这样的:
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.stat_notify_chat)
.setContentTitle("my app")
.setContentText("my app ")
.setPriority(Notification.PRIORITY_MIN)
.setContentIntent(pendingIntent).build();
因此,在这种情况下,您可以在通知栏中看到您的图标,并将其隐藏在状态栏中。希望这有帮助。
答案 5 :(得分:0)
我之前遇到过这个问题并且解决了这个问题:
str = "Steven Paul Steve Jobs (February 24, 1955 – October 5, 2011)";
val = "Steven Paul Steve Jobs";
str.indexOf(val);
并在private int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.LOLLIPOP);
// LOLLIPOP or Marshmellew>>>>>>>>>>>>>>>>>>>>> KitKat or Less
return useWhiteIcon ? R.drawable.logo_new : R.drawable.logo;
}
setSmallIcon()