13
 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 を使用しないようにしましたが、結果は通知がまったく表示されません!

4

6 に答える 6

17

nbuilder.setPriority(Notification.PRIORITY_MIN)Jelly Bean 以降では;を使用できます。この優先度レベルの正確な解釈はシステム UI に任されていますが、AOSP ではこれにより通知のアイコンが非表示になります。

これは、ユーザーの注意を引く必要のない「周囲」または「背景」の情報を対象としていますが、ユーザーがたまたま通知パネルを調べていた場合、ユーザーは興味を持っている可能性があります。通知の優先度を最大限に活用する方法について詳しくは、Android Design サイトの通知セクションをご覧ください。

于 2013-04-24T13:20:49.047 に答える
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.contentView != 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 を変更したり、通知内の RemoteViews フィールドを変更したりした瞬間に機能しなくなる可能性があるため、自己責任で使用してください。

于 2015-11-26T16:29:31.903 に答える
0

アイコンなしで独自のレイアウトを設定できます。

RemoteViews notificationView = new RemoteViews( context.getPackageName(), R.layout.notify ); NotificationCompat.Builder builder = new NotificationCompat.Builder(context) .setContent(notificationView)

于 2016-09-19T04:44:11.027 に答える
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();
この場合、通知バーにアイコンが表示され、ステータスバーに非表示になります。この助けを願っています。

于 2016-11-16T21:08:48.957 に答える
0

私は以前にこの問題に直面し、そのように解決しました:

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()

nbuilder.setSmallIcon(getNotificationIcon());
于 2016-11-16T21:26:24.297 に答える