Java Code Examples for android.app.Notification#Builder

The following examples show how to use android.app.Notification#Builder . 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: NotifyManager.java    From Tok-Android with GNU General Public License v3.0 6 votes vote down vote up
public Notification getServiceNotification(Context context) {
    Notification.Builder builder = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        builder = new Notification.Builder(context, mChannelServiceId);
    } else {
        builder = new Notification.Builder(context);
    }
    PendingIntent pendingIntent =
        PendingIntent.getActivity(context, 0, new Intent(context, HomeActivity.class),
            PendingIntent.FLAG_UPDATE_CURRENT);
    Notification notification = builder.setSmallIcon(R.mipmap.ic_launcher)
        .setContentTitle(StringUtils.getTextFromResId(R.string.service_notify_title))
        .setContentText(StringUtils.getTextFromResId(R.string.service_notify_content))
        .setContentIntent(pendingIntent)
        .build();
    notification.flags = Notification.FLAG_AUTO_CANCEL | Notification.FLAG_ONGOING_EVENT;
    return notification;
}
 
Example 2
Source File: TracerActivity.java    From codeexamples-android with Eclipse Public License 1.0 6 votes vote down vote up
private void notify(String methodName) {
    String name = this.getClass().getName();
    String[] strings = name.split("\\.");
    Notification.Builder notificationBuilder;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        createChannel();
        notificationBuilder = new Notification.Builder(this, TRACER);
    } else {
        //noinspection deprecation
        notificationBuilder = new Notification.Builder(this);
    }

    Notification notification = notificationBuilder
            .setContentTitle(methodName + " " + strings[strings.length - 1])
            .setAutoCancel(true)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentText(name).build();
    NotificationManager notificationManager =
            (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify((int) System.currentTimeMillis(), notification);
}
 
Example 3
Source File: SendRepostService.java    From iBeebo with GNU General Public License v3.0 6 votes vote down vote up
@Override
protected void onPreExecute() {
    super.onPreExecute();
    Notification.Builder builder = new Notification.Builder(SendRepostService.this)
            .setTicker(getString(R.string.sending_repost))
            .setContentTitle(getString(R.string.sending_repost)).setContentText(content).setOnlyAlertOnce(true)
            .setOngoing(true)
            .setSmallIcon(R.drawable.upload_white);

    builder.setProgress(0, 100, true);

    int notificationId = new Random().nextInt(Integer.MAX_VALUE);

    notification = builder.getNotification();

    NotificationUtility.show(notification, notificationId);

    tasksNotifications.put(WeiboSendTask.this, notificationId);

}
 
Example 4
Source File: LocationResultHelper.java    From background-location-updates-android-o with Apache License 2.0 6 votes vote down vote up
/**
 * Displays a notification with the location results.
 */
void showNotification() {
    Intent notificationIntent = new Intent(mContext, MainActivity.class);

    // Construct a task stack.
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);

    // Add the main Activity to the task stack as the parent.
    stackBuilder.addParentStack(MainActivity.class);

    // Push the content Intent onto the stack.
    stackBuilder.addNextIntent(notificationIntent);

    // Get a PendingIntent containing the entire back stack.
    PendingIntent notificationPendingIntent =
            stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification.Builder notificationBuilder = new Notification.Builder(mContext)
            .setContentTitle(getLocationResultTitle())
            .setContentText(getLocationResultText())
            .setSmallIcon(R.mipmap.ic_launcher)
            .setAutoCancel(true)
            .setContentIntent(notificationPendingIntent);

    getNotificationManager().notify(0, notificationBuilder.build());
}
 
Example 5
Source File: ClockService.java    From ToDoList with Apache License 2.0 5 votes vote down vote up
private Notification.Builder getNotification(String title, String text) {
//        Intent intent = ClockActivity.newIntent(getApplicationContext());
        Intent intent = new Intent(getBaseContext(),ClockActivity.class);
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);

        Notification.Builder builder = new Notification.Builder(this)
                .setSmallIcon(R.mipmap.clock)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                .setContentTitle(title)
                .setContentText(text)
                .setContentIntent(pi);


        // 兼容  API 26,Android 8.0
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            // 第三个参数表示通知的重要程度,默认则只在通知栏闪烁一下
            NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ONE_ID, CHANNEL_ONE_NAME, NotificationManager.IMPORTANCE_LOW);
            // 注册通道,注册后除非卸载再安装否则不改变
            notificationManager.createNotificationChannel(notificationChannel);
            notificationChannel.setSound(null,null);
            builder.setChannelId(CHANNEL_ONE_ID);
        }

        return builder;

    }
 
Example 6
Source File: NotificationService.java    From Pix-Art-Messenger with GNU General Public License v3.0 5 votes vote down vote up
Notification AppUpdateNotification(PendingIntent intent, String version, String filesize) {
    Notification.Builder mBuilder = new Notification.Builder(mXmppConnectionService);
    mBuilder.setContentTitle(mXmppConnectionService.getString(R.string.app_name));
    mBuilder.setContentText(String.format(mXmppConnectionService.getString(R.string.update_available), version, filesize));
    mBuilder.setSmallIcon(R.drawable.ic_update_notification);
    mBuilder.setContentIntent(intent);
    mBuilder.setOngoing(true);
    if (Compatibility.runsTwentySix()) {
        mBuilder.setChannelId(UPDATE_CHANNEL_ID);
    }
    return mBuilder.build();
}
 
Example 7
Source File: MaskService.java    From Blackbulb with GNU General Public License v3.0 5 votes vote down vote up
private void createNotification() {
    Log.i(TAG, "Create running notification");

    // Create open and pause action intents
    Intent openIntent = new Intent(this, MainActivity.class);
    Intent pauseIntent = new Intent(this, ActionReceiver.class);
    pauseIntent.setAction(Constants.ACTION_UPDATE_STATUS);
    pauseIntent.putExtra(Constants.Extra.ACTION, Constants.Action.PAUSE);
    pauseIntent.putExtra(Constants.Extra.BRIGHTNESS, mBrightness);
    Notification.Action pauseAction = new Notification.Action(
            R.drawable.ic_wb_incandescent_black_24dp,
            getString(R.string.notification_action_turn_off),
            PendingIntent.getBroadcast(getBaseContext(), 0, pauseIntent, Intent.FILL_IN_DATA)
    );

    // Create notification
    Notification.Builder builder = new Notification.Builder(getApplicationContext())
            .setContentTitle(getString(R.string.notification_running_title))
            .setContentText(getString(R.string.notification_running_msg))
            .setSmallIcon(R.drawable.ic_brightness_2_white_36dp)
            .addAction(pauseAction)
            .setContentIntent(PendingIntent.getActivity(getApplicationContext(),
                    0, openIntent, PendingIntent.FLAG_UPDATE_CURRENT))
            .setAutoCancel(false)
            .setOngoing(true)
            .setOnlyAlertOnce(true)
            .setShowWhen(false);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        builder.setChannelId(Constants.NOTIFICATION_CHANNEL_ID_RS);
    }
    mNotification = builder.build();
}
 
Example 8
Source File: IncomingCallNotificationService.java    From voice-quickstart-android with MIT License 5 votes vote down vote up
/**
 * Build a notification.
 *
 * @param text          the text of the notification
 * @param pendingIntent the body, pending intent for the notification
 * @param extras        extras passed with the notification
 * @return the builder
 */
@TargetApi(Build.VERSION_CODES.O)
private Notification buildNotification(String text, PendingIntent pendingIntent, Bundle extras,
                                      final CallInvite callInvite,
                                      int notificationId,
                                      String channelId) {
    Intent rejectIntent = new Intent(getApplicationContext(), IncomingCallNotificationService.class);
    rejectIntent.setAction(Constants.ACTION_REJECT);
    rejectIntent.putExtra(Constants.INCOMING_CALL_INVITE, callInvite);
    rejectIntent.putExtra(Constants.INCOMING_CALL_NOTIFICATION_ID, notificationId);
    PendingIntent piRejectIntent = PendingIntent.getService(getApplicationContext(), 0, rejectIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    Intent acceptIntent = new Intent(getApplicationContext(), IncomingCallNotificationService.class);
    acceptIntent.setAction(Constants.ACTION_ACCEPT);
    acceptIntent.putExtra(Constants.INCOMING_CALL_INVITE, callInvite);
    acceptIntent.putExtra(Constants.INCOMING_CALL_NOTIFICATION_ID, notificationId);
    PendingIntent piAcceptIntent = PendingIntent.getService(getApplicationContext(), 0, acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification.Builder builder =
            new Notification.Builder(getApplicationContext(), channelId)
                    .setSmallIcon(R.drawable.ic_call_end_white_24dp)
                    .setContentTitle(getString(R.string.app_name))
                    .setContentText(text)
                    .setCategory(Notification.CATEGORY_CALL)
                    .setFullScreenIntent(pendingIntent, true)
                    .setExtras(extras)
                    .setAutoCancel(true)
                    .addAction(android.R.drawable.ic_menu_delete, getString(R.string.decline), piRejectIntent)
                    .addAction(android.R.drawable.ic_menu_call, getString(R.string.answer), piAcceptIntent)
                    .setFullScreenIntent(pendingIntent, true);

    return builder.build();
}
 
Example 9
Source File: NotificationCompatIceCreamSandwich.java    From guideshow with MIT License 5 votes vote down vote up
static Notification add(Context context, Notification n,
        CharSequence contentTitle, CharSequence contentText, CharSequence contentInfo,
        RemoteViews tickerView, int number,
        PendingIntent contentIntent, PendingIntent fullScreenIntent, Bitmap largeIcon,
        int mProgressMax, int mProgress, boolean mProgressIndeterminate) {
    Notification.Builder b = new Notification.Builder(context)
            .setWhen(n.when)
            .setSmallIcon(n.icon, n.iconLevel)
            .setContent(n.contentView)
            .setTicker(n.tickerText, tickerView)
            .setSound(n.sound, n.audioStreamType)
            .setVibrate(n.vibrate)
            .setLights(n.ledARGB, n.ledOnMS, n.ledOffMS)
            .setOngoing((n.flags & Notification.FLAG_ONGOING_EVENT) != 0)
            .setOnlyAlertOnce((n.flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0)
            .setAutoCancel((n.flags & Notification.FLAG_AUTO_CANCEL) != 0)
            .setDefaults(n.defaults)
            .setContentTitle(contentTitle)
            .setContentText(contentText)
            .setContentInfo(contentInfo)
            .setContentIntent(contentIntent)
            .setDeleteIntent(n.deleteIntent)
            .setFullScreenIntent(fullScreenIntent,
                    (n.flags & Notification.FLAG_HIGH_PRIORITY) != 0)
            .setLargeIcon(largeIcon)
            .setNumber(number)
            .setProgress(mProgressMax, mProgress, mProgressIndeterminate);

    return b.getNotification();
}
 
Example 10
Source File: HttpProxyService.java    From g4proxy with Apache License 2.0 5 votes vote down vote up
private void startServiceInternal() {

        setNotifyChannel();

        Notification.Builder builder = new Notification.Builder(this.getApplicationContext()); //获取一个Notification构造器
        // 设置PendingIntent
        Intent nfIntent = new Intent(this, MainActivity.class);
        builder.setContentIntent(PendingIntent.getActivity(this, 0, nfIntent, FLAG_UPDATE_CURRENT))
                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher)) // 设置下拉列表中的图标(大图标)
                .setContentTitle("G4Proxy") // 设置下拉列表里的标题
                .setSmallIcon(R.mipmap.ic_launcher) // 设置状态栏内的小图标
                .setContentText("代理服务agent") // 设置上下文内容
                .setWhen(System.currentTimeMillis()); // 设置该通知发生的时间
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            builder.setChannelId(BuildConfig.APPLICATION_ID);
        }

        Notification notification = builder.build(); // 获取构建好的Notification
        notification.defaults = Notification.DEFAULT_SOUND; //设置为默认的声音
        startForeground(110, notification);// 开始前台服务


        String clientKey = Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);

        //新的代理服务器实现
        LogbackConfig.config();

        G4ProxyClient g4ProxyClient = new G4ProxyClient("www.scumall.com", 50000, clientKey);
        g4ProxyClient.startup();
    }
 
Example 11
Source File: SendRepostService.java    From iBeebo with GNU General Public License v3.0 4 votes vote down vote up
private void showFailedNotification(final WeiboSendTask task) {
    Notification.Builder builder = new Notification.Builder(SendRepostService.this)
            .setTicker(getString(R.string.send_failed))
            .setContentTitle(getString(R.string.send_faile_click_to_open)).setContentText(content)
            .setOnlyAlertOnce(true).setAutoCancel(true)
            .setSmallIcon(R.drawable.send_failed).setOngoing(false);

    Intent notifyIntent = WriteRepostActivity.startBecauseSendFailed(SendRepostService.this, account, content,
            oriMsg, repostDraftBean, e.getError());

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

    builder.setContentIntent(pendingIntent);

    Notification notification;
    if (Utility.isJB()) {
        Notification.BigTextStyle bigTextStyle = new Notification.BigTextStyle(builder);
        bigTextStyle.setBigContentTitle(getString(R.string.send_faile_click_to_open));
        bigTextStyle.bigText(content);
        bigTextStyle.setSummaryText(account.getUsernick());
        builder.setStyle(bigTextStyle);

        Intent intent = new Intent(SendRepostService.this, SendRepostService.class);
        intent.putExtra("oriMsg", oriMsg);
        intent.putExtra("content", content);
        intent.putExtra("is_comment", is_comment);
        intent.putExtra(Constants.TOKEN, token);
        intent.putExtra(Constants.ACCOUNT, account);

        intent.putExtra("lastNotificationId", tasksNotifications.get(task));

        PendingIntent retrySendIntent = PendingIntent.getService(SendRepostService.this, 0, intent,
                PendingIntent.FLAG_UPDATE_CURRENT);
        builder.addAction(R.drawable.send_light, getString(R.string.retry_send), retrySendIntent);
        notification = builder.build();

    } else {
        notification = builder.getNotification();
    }

    final int id = tasksNotifications.get(task);

    NotificationUtility.show(notification, id);

    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            stopServiceIfTasksAreEnd(task);
        }
    }, 3000);
}
 
Example 12
Source File: Manager.java    From cordova-plugin-firebase-extended-notification with MIT License 4 votes vote down vote up
public void showNotification(JSONObject dataToReturnOnClick, JSONObject notificationOptions){
    Options options = new Options(notificationOptions, this.context.getApplicationContext());
    this.createNotificationChannel(options);
    Notification.Builder builder;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        builder = new Notification.Builder(this.context, options.getChannelId());
    } else {
        builder = new Notification.Builder(this.context);
    }
    builder.setDefaults(0)
        .setContentTitle(options.getTitle()).setSmallIcon(options.getSmallIconResourceId())
        .setLargeIcon(options.getLargeIconBitmap()).setAutoCancel(options.doesAutoCancel());
    if(options.getBigPictureBitmap() != null)
        builder.setStyle(new BigPictureStyle().bigPicture(options.getBigPictureBitmap()));
    if(options.doesVibrate() && options.getVibratePattern() != null)
        builder.setVibrate(options.getVibratePattern());
    else if (Build.VERSION.SDK_INT >= 21 && options.doesHeadsUp())
        builder.setVibrate(new long[0]);
    if(options.doesHeadsUp()) {
        builder.setPriority(Notification.PRIORITY_HIGH);
    }
    if(options.doesSound() && options.getSoundUri() != null)
        builder.setSound(options.getSoundUri(), android.media.AudioManager.STREAM_NOTIFICATION);
    if (options.doesColor() && Build.VERSION.SDK_INT >= 22)
        builder.setColor(options.getColor());
    this.setContentTextAndMultiline(builder, options);
    this.setOnClick(builder, dataToReturnOnClick);
    Notification notification;
    if (Build.VERSION.SDK_INT < 16) {
        notification = builder.getNotification(); // Notification for HoneyComb to ICS
    } else {
        notification = builder.build(); // Notification for Jellybean and above
    }
    if(options.doesAutoCancel())
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
    if(options.doesVibrate() && options.getVibratePattern() == null)
        notification.defaults |= Notification.DEFAULT_VIBRATE;
    if(options.doesSound() && options.getSoundUri() == null)
        notification.defaults |= Notification.DEFAULT_SOUND;
    NotificationManager notificationManager
        = (NotificationManager) this.context.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(options.getId(), notification);
    if(options.doesOpenApp())
        openApp();
}
 
Example 13
Source File: Download.java    From UpdateFun with Apache License 2.0 4 votes vote down vote up
Down_handler(Context context, Notification.Builder builder, NotificationManager notificationManager) {
    mContextReference = new WeakReference<>(context);
    this.builder = builder;
    this.notificationManager = notificationManager;
}
 
Example 14
Source File: MagnetNotification.java    From magnet-client with Mozilla Public License 2.0 4 votes vote down vote up
void notify(Notification.Builder builder) {
    NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(mId, builder.build());
}
 
Example 15
Source File: UpdateHandler.java    From AOSP-Kayboard-7.1.2 with Apache License 2.0 4 votes vote down vote up
/**
 * Shows the notification that informs the user a dictionary is available.
 *
 * When this notification is clicked, the dialog for downloading the dictionary
 * over a metered connection is shown.
 */
private static void showDictionaryAvailableNotification(final Context context,
        final String clientId, final ContentValues installCandidate) {
    final String localeString = installCandidate.getAsString(MetadataDbHelper.LOCALE_COLUMN);
    final Intent intent = new Intent();
    intent.setClass(context, DownloadOverMeteredDialog.class);
    intent.putExtra(DownloadOverMeteredDialog.CLIENT_ID_KEY, clientId);
    intent.putExtra(DownloadOverMeteredDialog.WORDLIST_TO_DOWNLOAD_KEY,
            installCandidate.getAsString(MetadataDbHelper.WORDLISTID_COLUMN));
    intent.putExtra(DownloadOverMeteredDialog.SIZE_KEY,
            installCandidate.getAsInteger(MetadataDbHelper.FILESIZE_COLUMN));
    intent.putExtra(DownloadOverMeteredDialog.LOCALE_KEY, localeString);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    final PendingIntent notificationIntent = PendingIntent.getActivity(context,
            0 /* requestCode */, intent,
            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);
    final NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    // None of those are expected to happen, but just in case...
    if (null == notificationIntent || null == notificationManager) return;

    final String language = (null == localeString) ? ""
            : LocaleUtils.constructLocaleFromString(localeString).getDisplayLanguage();
    final String titleFormat = context.getString(R.string.dict_available_notification_title);
    final String notificationTitle = String.format(titleFormat, language);
    final Notification.Builder builder = new Notification.Builder(context)
            .setAutoCancel(true)
            .setContentIntent(notificationIntent)
            .setContentTitle(notificationTitle)
            .setContentText(context.getString(R.string.dict_available_notification_description))
            .setTicker(notificationTitle)
            .setOngoing(false)
            .setOnlyAlertOnce(true)
            .setSmallIcon(R.drawable.ic_notify_dictionary);
    NotificationCompatUtils.setColor(builder,
            context.getResources().getColor(R.color.notification_accent_color));
    NotificationCompatUtils.setPriorityToLow(builder);
    NotificationCompatUtils.setVisibilityToSecret(builder);
    NotificationCompatUtils.setCategoryToRecommendation(builder);
    final Notification notification = NotificationCompatUtils.build(builder);
    notificationManager.notify(DICT_AVAILABLE_NOTIFICATION_ID, notification);
}
 
Example 16
Source File: SimpleTextNotificationService.java    From iBeebo with GNU General Public License v3.0 4 votes vote down vote up
private void buildNotification(String uid) {

        ValueWrapper valueWrapper = valueBagHashMap.get(uid);

        if (valueWrapper == null) {
            return;
        }

        final AccountBean accountBean = valueWrapper.accountBean;
        final UnreadBean unreadBean = valueWrapper.unreadBean;

        Intent clickToOpenAppPendingIntentInner = valueWrapper.clickToOpenAppPendingIntentInner;

        String ticker = valueWrapper.ticker;

        final RecordOperationAppBroadcastReceiver clearNotificationEventReceiver = valueWrapper.clearNotificationEventReceiver;

        Notification.Builder builder = new Notification.Builder(getBaseContext()).setTicker(ticker)
                .setContentText(accountBean.getUsernick())
                .setSmallIcon(R.drawable.ic_notification).setAutoCancel(true)
                .setContentIntent(getPendingIntent(clickToOpenAppPendingIntentInner))
                .setOnlyAlertOnce(true);

        builder.setContentTitle(ticker);

        Utility.unregisterReceiverIgnoredReceiverNotRegisteredException(BeeboApplication.getInstance(),
                clearNotificationEventReceiver);

        valueWrapper.clearNotificationEventReceiver = new RecordOperationAppBroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            new ClearUnreadDao(accountBean.getAccess_token()).clearMentionStatusUnread(unreadBean,
                                    accountBean.getUid());
                            new ClearUnreadDao(accountBean.getAccess_token()).clearMentionCommentUnread(unreadBean,
                                    accountBean.getUid());
                            new ClearUnreadDao(accountBean.getAccess_token()).clearCommentUnread(unreadBean,
                                    accountBean.getUid());
                        } catch (WeiboException ignored) {

                        } finally {
                            Utility.unregisterReceiverIgnoredReceiverNotRegisteredException(BeeboApplication.getInstance(),
                                    clearNotificationEventReceiver);
                            if (Utility.isDebugMode()) {
                                new Handler(Looper.getMainLooper()).post(new Runnable() {
                                    @Override
                                    public void run() {
                                        Toast.makeText(getApplicationContext(), "iBeebo的通知被移除",
                                                Toast.LENGTH_SHORT).show();

                                    }
                                });
                            }
                        }

                    }
                }).start();
            }
        };

        IntentFilter intentFilter = new IntentFilter(RESET_UNREAD_MENTIONS_WEIBO_ACTION);

        BeeboApplication.getInstance().registerReceiver(valueWrapper.clearNotificationEventReceiver, intentFilter);

        Intent broadcastIntent = new Intent(RESET_UNREAD_MENTIONS_WEIBO_ACTION);

        PendingIntent deletedPendingIntent = PendingIntent.getBroadcast(BeeboApplication.getInstance(), accountBean.getUid()
                        .hashCode(), broadcastIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setDeleteIntent(deletedPendingIntent);

        Utility.configVibrateLedRingTone(builder);

        NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(
                NOTIFICATION_SERVICE);
        notificationManager.notify(getMentionsWeiboNotificationId(accountBean), builder.build());
    }
 
Example 17
Source File: UpdateHandler.java    From Android-Keyboard with Apache License 2.0 4 votes vote down vote up
/**
 * Shows the notification that informs the user a dictionary is available.
 *
 * When this notification is clicked, the dialog for downloading the dictionary
 * over a metered connection is shown.
 */
private static void showDictionaryAvailableNotification(final Context context,
        final String clientId, final ContentValues installCandidate) {
    final String localeString = installCandidate.getAsString(MetadataDbHelper.LOCALE_COLUMN);
    final Intent intent = new Intent();
    intent.setClass(context, DownloadOverMeteredDialog.class);
    intent.putExtra(DownloadOverMeteredDialog.CLIENT_ID_KEY, clientId);
    intent.putExtra(DownloadOverMeteredDialog.WORDLIST_TO_DOWNLOAD_KEY,
            installCandidate.getAsString(MetadataDbHelper.WORDLISTID_COLUMN));
    intent.putExtra(DownloadOverMeteredDialog.SIZE_KEY,
            installCandidate.getAsInteger(MetadataDbHelper.FILESIZE_COLUMN));
    intent.putExtra(DownloadOverMeteredDialog.LOCALE_KEY, localeString);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    final PendingIntent notificationIntent = PendingIntent.getActivity(context,
            0 /* requestCode */, intent,
            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);
    final NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    // None of those are expected to happen, but just in case...
    if (null == notificationIntent || null == notificationManager) return;

    final String language = (null == localeString) ? ""
            : LocaleUtils.constructLocaleFromString(localeString).getDisplayLanguage();
    final String titleFormat = context.getString(R.string.dict_available_notification_title);
    final String notificationTitle = String.format(titleFormat, language);
    final Notification.Builder builder = new Notification.Builder(context)
            .setAutoCancel(true)
            .setContentIntent(notificationIntent)
            .setContentTitle(notificationTitle)
            .setContentText(context.getString(R.string.dict_available_notification_description))
            .setTicker(notificationTitle)
            .setOngoing(false)
            .setOnlyAlertOnce(true)
            .setSmallIcon(R.drawable.ic_notify_dictionary);
    NotificationCompatUtils.setColor(builder,
            context.getResources().getColor(R.color.notification_accent_color));
    NotificationCompatUtils.setPriorityToLow(builder);
    NotificationCompatUtils.setVisibilityToSecret(builder);
    NotificationCompatUtils.setCategoryToRecommendation(builder);
    final Notification notification = NotificationCompatUtils.build(builder);
    notificationManager.notify(DICT_AVAILABLE_NOTIFICATION_ID, notification);
}
 
Example 18
Source File: NotificationController.java    From MiPushFramework with GNU General Public License v3.0 4 votes vote down vote up
@TargetApi(Build.VERSION_CODES.N)
private static void updateSummaryNotification(Context context, String packageName, String groupId) {
    NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    StatusBarNotification[] activeNotifications = manager.getActiveNotifications();

    
    int notificationCntInGroup = 0;
    for (StatusBarNotification statusBarNotification : activeNotifications) {
        if (groupId.equals(statusBarNotification.getNotification().getGroup())) {
            notificationCntInGroup++;
        }
    }

    if (notificationCntInGroup > 1) {

        CharSequence appName = ApplicationNameCache.getInstance().getAppName(context, packageName);

        Bundle extras = new Bundle();
        Notification.Builder builder;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            builder = new Notification.Builder(context, getChannelIdByPkg(packageName));
            builder.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN);
        } else {
            builder = new Notification.Builder(context);
        }

        int color = getIconColor(context, packageName);
        if (color != Notification.COLOR_DEFAULT) {
            CharSequence subText = ColorUtil.createColorSubtext(appName, color);
            if (subText != null) {
                extras.putCharSequence(NotificationCompat.EXTRA_SUB_TEXT, subText);
            }
            builder.setColor(color);
        } else {
            extras.putCharSequence(NotificationCompat.EXTRA_SUB_TEXT, appName);
        }

        builder.setExtras(extras);

        // Set small icon
        NotificationController.processSmallIcon(context, packageName, builder);

        builder.setCategory(Notification.CATEGORY_EVENT)
                .setGroupSummary(true)
                .setGroup(groupId);
        Notification notification = builder.build();
        manager.notify(packageName.hashCode(), notification);
    } else {
        manager.cancel(packageName.hashCode());
    }
}
 
Example 19
Source File: NotificationChannels.java    From xDrip-plus with GNU General Public License v3.0 4 votes vote down vote up
@TargetApi(26)
public static NotificationChannel getChan(Notification.Builder wip) {

    final Notification temp = wip.build();
    if (temp.getChannelId() == null) return null;

    // create generic audio attributes
    final AudioAttributes generic_audio = new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_NOTIFICATION)
            .setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN)
            .build();

    // create notification channel for hashing purposes from the existing notification builder
    NotificationChannel template = new NotificationChannel(
            temp.getChannelId(),
            getString(temp.getChannelId()),
            NotificationManager.IMPORTANCE_DEFAULT);


    // mirror the notification parameters in the channel
    template.setGroup(temp.getChannelId());
    template.setVibrationPattern(temp.vibrate);
    template.setSound(temp.sound, generic_audio);
    template.setLightColor(temp.ledARGB);
    if ((temp.ledOnMS != 0) && (temp.ledOffMS != 0))
        template.enableLights(true); // weird how this doesn't work like vibration pattern
    template.setDescription(temp.getChannelId() + " " + wip.hashCode());

    // get a nice string to identify the hash
    final String mhash = my_text_hash(template);

    // create another notification channel using the hash because id is immutable
    final NotificationChannel channel = new NotificationChannel(
            template.getId() + mhash,
            getString(temp.getChannelId()) + mhash,
            NotificationManager.IMPORTANCE_DEFAULT);

    // mirror the settings from the previous channel
    channel.setSound(template.getSound(), generic_audio);
    if (addChannelGroup()) {
        channel.setGroup(template.getGroup());
    } else {
        channel.setGroup(channel.getId());
    }
    channel.setDescription(template.getDescription());
    channel.setVibrationPattern(template.getVibrationPattern());
    template.setLightColor(temp.ledARGB);
    if ((temp.ledOnMS != 0) && (temp.ledOffMS != 0))
        template.enableLights(true); // weird how this doesn't work like vibration pattern
    template.setDescription(temp.getChannelId() + " " + wip.hashCode());

    // create a group to hold this channel if one doesn't exist or update text
    getNotifManager().createNotificationChannelGroup(new NotificationChannelGroup(channel.getGroup(), getString(channel.getGroup())));
    // create this channel if it doesn't exist or update text
    getNotifManager().createNotificationChannel(channel);
    return channel;
}
 
Example 20
Source File: NotificationUtils.java    From AcgClub with MIT License 4 votes vote down vote up
@RequiresApi(api = Build.VERSION_CODES.O)
private Notification.Builder getChannelNotification(String title, String content, int icon) {
  Notification.Builder builder = new Notification.Builder(getApplicationContext(), CHANNEL_ID);
  Notification.Builder notificationBuilder = builder
      //设置标题
      .setContentTitle(title)
      //消息内容
      .setContentText(content)
      //设置通知的图标
      .setSmallIcon(icon)
      //让通知左右滑的时候是否可以取消通知
      .setOngoing(ongoing)
      //设置优先级
      .setPriority(priority)
      //是否提示一次.true - 如果Notification已经存在状态栏即使在调用notify函数也不会更新
      .setOnlyAlertOnce(onlyAlertOnce)
      .setAutoCancel(true);
  if (remoteViews != null) {
    //设置自定义view通知栏
    notificationBuilder.setContent(remoteViews);
  }
  if (intent != null) {
    notificationBuilder.setContentIntent(intent);
  }
  if (ticker != null && ticker.length() > 0) {
    //设置状态栏的标题
    notificationBuilder.setTicker(ticker);
  }
  if (when != 0) {
    //设置通知时间,默认为系统发出通知的时间,通常不用设置
    notificationBuilder.setWhen(when);
  }
  if (sound != null) {
    //设置sound
    notificationBuilder.setSound(sound);
  }
  if (defaults != 0) {
    //设置默认的提示音
    notificationBuilder.setDefaults(defaults);
  }
  if (pattern != null) {
    //自定义震动效果
    notificationBuilder.setVibrate(pattern);
  }
  return notificationBuilder;
}