Java Code Examples for android.app.NotificationChannel#setImportance()

The following examples show how to use android.app.NotificationChannel#setImportance() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: RankingHelper.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
@Override
public void createNotificationChannel(String pkg, int uid, NotificationChannel channel,
        boolean fromTargetApp, boolean hasDndAccess) {
    Preconditions.checkNotNull(pkg);
    Preconditions.checkNotNull(channel);
    Preconditions.checkNotNull(channel.getId());
    Preconditions.checkArgument(!TextUtils.isEmpty(channel.getName()));
    Record r = getOrCreateRecord(pkg, uid);
    if (r == null) {
        throw new IllegalArgumentException("Invalid package");
    }
    if (channel.getGroup() != null && !r.groups.containsKey(channel.getGroup())) {
        throw new IllegalArgumentException("NotificationChannelGroup doesn't exist");
    }
    if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(channel.getId())) {
        throw new IllegalArgumentException("Reserved id");
    }
    NotificationChannel existing = r.channels.get(channel.getId());
    // Keep most of the existing settings
    if (existing != null && fromTargetApp) {
        if (existing.isDeleted()) {
            existing.setDeleted(false);

            // log a resurrected channel as if it's new again
            MetricsLogger.action(getChannelLog(channel, pkg).setType(
                    MetricsProto.MetricsEvent.TYPE_OPEN));
        }

        existing.setName(channel.getName().toString());
        existing.setDescription(channel.getDescription());
        existing.setBlockableSystem(channel.isBlockableSystem());
        if (existing.getGroup() == null) {
            existing.setGroup(channel.getGroup());
        }

        // Apps are allowed to downgrade channel importance if the user has not changed any
        // fields on this channel yet.
        if (existing.getUserLockedFields() == 0 &&
                channel.getImportance() < existing.getImportance()) {
            existing.setImportance(channel.getImportance());
        }

        // system apps and dnd access apps can bypass dnd if the user hasn't changed any
        // fields on the channel yet
        if (existing.getUserLockedFields() == 0 && hasDndAccess) {
            boolean bypassDnd = channel.canBypassDnd();
            existing.setBypassDnd(bypassDnd);

            if (bypassDnd != mAreChannelsBypassingDnd) {
                updateChannelsBypassingDnd();
            }
        }

        updateConfig();
        return;
    }
    if (channel.getImportance() < IMPORTANCE_NONE
            || channel.getImportance() > NotificationManager.IMPORTANCE_MAX) {
        throw new IllegalArgumentException("Invalid importance level");
    }

    // Reset fields that apps aren't allowed to set.
    if (fromTargetApp && !hasDndAccess) {
        channel.setBypassDnd(r.priority == Notification.PRIORITY_MAX);
    }
    if (fromTargetApp) {
        channel.setLockscreenVisibility(r.visibility);
    }
    clearLockedFields(channel);
    if (channel.getLockscreenVisibility() == Notification.VISIBILITY_PUBLIC) {
        channel.setLockscreenVisibility(Ranking.VISIBILITY_NO_OVERRIDE);
    }
    if (!r.showBadge) {
        channel.setShowBadge(false);
    }

    r.channels.put(channel.getId(), channel);
    if (channel.canBypassDnd() != mAreChannelsBypassingDnd) {
        updateChannelsBypassingDnd();
    }
    MetricsLogger.action(getChannelLog(channel, pkg).setType(
            MetricsProto.MetricsEvent.TYPE_OPEN));
}
 
Example 2
Source File: NotificationHelper.java    From andOTP with MIT License 6 votes vote down vote up
private static void createNotificationChannel(Context context, Constants.NotificationChannel channel) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel notificationChannel = new NotificationChannel(channelId(channel), context.getString(R.string.app_name), NotificationManager.IMPORTANCE_DEFAULT);

        switch(channel) {
            case BACKUP_FAILED:
                notificationChannel.setName(context.getString(R.string.notification_channel_name_backup_failed));
                notificationChannel.setDescription(context.getString(R.string.notification_channel_desc_backup_failed));
                notificationChannel.setImportance(NotificationManager.IMPORTANCE_HIGH);
                break;
            case BACKUP_SUCCESS:
                notificationChannel.setName(context.getString(R.string.notification_channel_name_backup_success));
                notificationChannel.setDescription(context.getString(R.string.notification_channel_desc_backup_success));
                notificationChannel.setImportance(NotificationManager.IMPORTANCE_LOW);
                break;
            default:
                break;
        }

        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(notificationChannel);
    }
}
 
Example 3
Source File: DownloadForegroundService.java    From VBrowser-Android with GNU General Public License v2.0 5 votes vote down vote up
@RequiresApi(Build.VERSION_CODES.O)
private String createNotificationChannel(){
    String channelId = "VBrowserNotification";
    String channelName = "前台下载通知";
    NotificationChannel chan = new NotificationChannel(channelId,
            channelName, NotificationManager.IMPORTANCE_HIGH);
    chan.setLightColor(Color.BLUE);
    chan.setImportance(NotificationManager.IMPORTANCE_NONE);
    chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
    NotificationManager service = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    service.createNotificationChannel(chan);
    return channelId;
}
 
Example 4
Source File: NotificationUtil.java    From android-testdpc with Apache License 2.0 5 votes vote down vote up
@RequiresApi(VERSION_CODES.O)
private static void createDefaultNotificationChannel(Context context) {
    NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    String appName = context.getString(R.string.app_name);
    NotificationChannel channel = new NotificationChannel(DEFAULT_CHANNEL_ID,
            appName, NotificationManager.IMPORTANCE_DEFAULT);
    channel.setImportance(NotificationManager.IMPORTANCE_LOW);
    notificationManager.createNotificationChannel(channel);
}
 
Example 5
Source File: PushTemplateHelper.java    From Android-SDK with MIT License 5 votes vote down vote up
static private NotificationChannel updateNotificationChannel( Context context, NotificationChannel notificationChannel, final AndroidPushTemplate template )
{
  if( template.getShowBadge() != null )
    notificationChannel.setShowBadge( template.getShowBadge() );

  if( template.getPriority() != null && template.getPriority() > 0 && template.getPriority() < 6 )
    notificationChannel.setImportance( template.getPriority() ); // NotificationManager.IMPORTANCE_DEFAULT

  AudioAttributes audioAttributes = new AudioAttributes.Builder()
          .setUsage( AudioAttributes.USAGE_NOTIFICATION_RINGTONE )
          .setContentType( AudioAttributes.CONTENT_TYPE_SONIFICATION )
          .setFlags( AudioAttributes.FLAG_AUDIBILITY_ENFORCED )
          .setLegacyStreamType( AudioManager.STREAM_NOTIFICATION )
          .build();

  notificationChannel.setSound( PushTemplateHelper.getSoundUri( context, template.getSound() ), audioAttributes );

  if (template.getLightsColor() != null)
  {
    notificationChannel.enableLights( true );
    notificationChannel.setLightColor( template.getLightsColor()|0xFF000000 );
  }

  if( template.getVibrate() != null && template.getVibrate().length > 0 )
  {
    long[] vibrate = new long[ template.getVibrate().length ];
    int index = 0;
    for( long l : template.getVibrate() )
      vibrate[ index++ ] = l;

    notificationChannel.enableVibration( true );
    notificationChannel.setVibrationPattern( vibrate );
  }

  return notificationChannel;
}
 
Example 6
Source File: API26Wrapper.java    From Pedometer with Apache License 2.0 5 votes vote down vote up
public static Notification.Builder getNotificationBuilder(final Context context) {
    NotificationManager manager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationChannel channel =
            new NotificationChannel(NOTIFICATION_CHANNEL_ID, NOTIFICATION_CHANNEL_ID,
                    NotificationManager.IMPORTANCE_NONE);
    channel.setImportance(NotificationManager.IMPORTANCE_MIN); // ignored by Android O ...
    channel.enableLights(false);
    channel.enableVibration(false);
    channel.setBypassDnd(false);
    channel.setSound(null, null);
    manager.createNotificationChannel(channel);
    Notification.Builder builder = new Notification.Builder(context, NOTIFICATION_CHANNEL_ID);
    return builder;
}