Search in sources :

Example 36 with Notification

use of android.app.Notification in project platform_frameworks_base by android.

the class PhoneStatusBar method maybeEscalateHeadsUp.

@Override
public void maybeEscalateHeadsUp() {
    Collection<HeadsUpManager.HeadsUpEntry> entries = mHeadsUpManager.getAllEntries();
    for (HeadsUpManager.HeadsUpEntry entry : entries) {
        final StatusBarNotification sbn = entry.entry.notification;
        final Notification notification = sbn.getNotification();
        if (notification.fullScreenIntent != null) {
            if (DEBUG) {
                Log.d(TAG, "converting a heads up to fullScreen");
            }
            try {
                EventLog.writeEvent(EventLogTags.SYSUI_HEADS_UP_ESCALATION, sbn.getKey());
                notification.fullScreenIntent.send();
                entry.entry.notifyFullScreenIntentLaunched();
            } catch (PendingIntent.CanceledException e) {
            }
        }
    }
    mHeadsUpManager.releaseAllImmediately();
}
Also used : StatusBarNotification(android.service.notification.StatusBarNotification) PendingIntent(android.app.PendingIntent) HeadsUpManager(com.android.systemui.statusbar.policy.HeadsUpManager) Notification(android.app.Notification) StatusBarNotification(android.service.notification.StatusBarNotification)

Example 37 with Notification

use of android.app.Notification in project platform_frameworks_base by android.

the class PhoneStatusBar method removeNotification.

@Override
public void removeNotification(String key, RankingMap ranking) {
    boolean deferRemoval = false;
    if (mHeadsUpManager.isHeadsUp(key)) {
        // A cancel() in repsonse to a remote input shouldn't be delayed, as it makes the
        // sending look longer than it takes.
        boolean ignoreEarliestRemovalTime = mRemoteInputController.isSpinning(key) && !FORCE_REMOTE_INPUT_HISTORY;
        deferRemoval = !mHeadsUpManager.removeNotification(key, ignoreEarliestRemovalTime);
    }
    if (key.equals(mMediaNotificationKey)) {
        clearCurrentMediaNotification();
        updateMediaMetaData(true, true);
    }
    if (FORCE_REMOTE_INPUT_HISTORY && mRemoteInputController.isSpinning(key)) {
        Entry entry = mNotificationData.get(key);
        StatusBarNotification sbn = entry.notification;
        Notification.Builder b = Notification.Builder.recoverBuilder(mContext, sbn.getNotification().clone());
        CharSequence[] oldHistory = sbn.getNotification().extras.getCharSequenceArray(Notification.EXTRA_REMOTE_INPUT_HISTORY);
        CharSequence[] newHistory;
        if (oldHistory == null) {
            newHistory = new CharSequence[1];
        } else {
            newHistory = new CharSequence[oldHistory.length + 1];
            for (int i = 0; i < oldHistory.length; i++) {
                newHistory[i + 1] = oldHistory[i];
            }
        }
        newHistory[0] = String.valueOf(entry.remoteInputText);
        b.setRemoteInputHistory(newHistory);
        Notification newNotification = b.build();
        // Undo any compatibility view inflation
        newNotification.contentView = sbn.getNotification().contentView;
        newNotification.bigContentView = sbn.getNotification().bigContentView;
        newNotification.headsUpContentView = sbn.getNotification().headsUpContentView;
        StatusBarNotification newSbn = new StatusBarNotification(sbn.getPackageName(), sbn.getOpPkg(), sbn.getId(), sbn.getTag(), sbn.getUid(), sbn.getInitialPid(), 0, newNotification, sbn.getUser(), sbn.getPostTime());
        updateNotification(newSbn, null);
        mKeysKeptForRemoteInput.add(entry.key);
        return;
    }
    if (deferRemoval) {
        mLatestRankingMap = ranking;
        mHeadsUpEntriesToRemoveOnSwitch.add(mHeadsUpManager.getEntry(key));
        return;
    }
    Entry entry = mNotificationData.get(key);
    if (entry != null && mRemoteInputController.isRemoteInputActive(entry) && (entry.row != null && !entry.row.isDismissed())) {
        mLatestRankingMap = ranking;
        mRemoteInputEntriesToRemoveOnCollapse.add(entry);
        return;
    }
    if (entry != null && entry.row != null) {
        entry.row.setRemoved();
    }
    // Let's remove the children if this was a summary
    handleGroupSummaryRemoved(key, ranking);
    StatusBarNotification old = removeNotificationViews(key, ranking);
    if (SPEW)
        Log.d(TAG, "removeNotification key=" + key + " old=" + old);
    if (old != null) {
        if (CLOSE_PANEL_WHEN_EMPTIED && !hasActiveNotifications() && !mNotificationPanel.isTracking() && !mNotificationPanel.isQsExpanded()) {
            if (mState == StatusBarState.SHADE) {
                animateCollapsePanels();
            } else if (mState == StatusBarState.SHADE_LOCKED && !isCollapsing()) {
                goToKeyguard();
            }
        }
    }
    setAreThereNotifications();
}
Also used : Entry(com.android.systemui.statusbar.NotificationData.Entry) StatusBarNotification(android.service.notification.StatusBarNotification) Notification(android.app.Notification) StatusBarNotification(android.service.notification.StatusBarNotification) Point(android.graphics.Point)

Example 38 with Notification

use of android.app.Notification in project platform_frameworks_base by android.

the class AccountManagerService method createNoCredentialsPermissionNotification.

private void createNoCredentialsPermissionNotification(Account account, Intent intent, String packageName, int userId) {
    int uid = intent.getIntExtra(GrantCredentialsPermissionActivity.EXTRAS_REQUESTING_UID, -1);
    String authTokenType = intent.getStringExtra(GrantCredentialsPermissionActivity.EXTRAS_AUTH_TOKEN_TYPE);
    final String titleAndSubtitle = mContext.getString(R.string.permission_request_notification_with_subtitle, account.name);
    final int index = titleAndSubtitle.indexOf('\n');
    String title = titleAndSubtitle;
    String subtitle = "";
    if (index > 0) {
        title = titleAndSubtitle.substring(0, index);
        subtitle = titleAndSubtitle.substring(index + 1);
    }
    UserHandle user = new UserHandle(userId);
    Context contextForUser = getContextForUser(user);
    Notification n = new Notification.Builder(contextForUser).setSmallIcon(android.R.drawable.stat_sys_warning).setWhen(0).setColor(contextForUser.getColor(com.android.internal.R.color.system_notification_accent_color)).setContentTitle(title).setContentText(subtitle).setContentIntent(PendingIntent.getActivityAsUser(mContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT, null, user)).build();
    installNotification(getCredentialPermissionNotificationId(account, authTokenType, uid), n, packageName, user.getIdentifier());
}
Also used : Context(android.content.Context) UserHandle(android.os.UserHandle) Notification(android.app.Notification)

Example 39 with Notification

use of android.app.Notification in project platform_frameworks_base by android.

the class AccountManagerService method doNotification.

private void doNotification(UserAccounts accounts, Account account, CharSequence message, Intent intent, String packageName, final int userId) {
    long identityToken = clearCallingIdentity();
    try {
        if (Log.isLoggable(TAG, Log.VERBOSE)) {
            Log.v(TAG, "doNotification: " + message + " intent:" + intent);
        }
        if (intent.getComponent() != null && GrantCredentialsPermissionActivity.class.getName().equals(intent.getComponent().getClassName())) {
            createNoCredentialsPermissionNotification(account, intent, packageName, userId);
        } else {
            Context contextForUser = getContextForUser(new UserHandle(userId));
            final Integer notificationId = getSigninRequiredNotificationId(accounts, account);
            intent.addCategory(String.valueOf(notificationId));
            final String notificationTitleFormat = contextForUser.getText(R.string.notification_title).toString();
            Notification n = new Notification.Builder(contextForUser).setWhen(0).setSmallIcon(android.R.drawable.stat_sys_warning).setColor(contextForUser.getColor(com.android.internal.R.color.system_notification_accent_color)).setContentTitle(String.format(notificationTitleFormat, account.name)).setContentText(message).setContentIntent(PendingIntent.getActivityAsUser(mContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT, null, new UserHandle(userId))).build();
            installNotification(notificationId, n, packageName, userId);
        }
    } finally {
        restoreCallingIdentity(identityToken);
    }
}
Also used : Context(android.content.Context) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) UserHandle(android.os.UserHandle) Notification(android.app.Notification)

Example 40 with Notification

use of android.app.Notification in project platform_frameworks_base by android.

the class SchedulerService method onStartCommand.

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Notification status = new Notification.Builder(this).setSmallIcon(R.drawable.stat_happy).setWhen(System.currentTimeMillis()).setContentTitle("Scheduler Test running").setContentText("Scheduler Test running").setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, FrameworkPerfActivity.class).setAction(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK), 0)).setOngoing(true).build();
    startForeground(1, status);
    return START_STICKY;
}
Also used : Intent(android.content.Intent) PendingIntent(android.app.PendingIntent) Notification(android.app.Notification)

Aggregations

Notification (android.app.Notification)568 PendingIntent (android.app.PendingIntent)276 Intent (android.content.Intent)253 NotificationManager (android.app.NotificationManager)128 StatusBarNotification (android.service.notification.StatusBarNotification)96 NotificationCompat (android.support.v4.app.NotificationCompat)64 Resources (android.content.res.Resources)56 Bitmap (android.graphics.Bitmap)48 Test (org.junit.Test)48 Context (android.content.Context)47 ITransientNotification (android.app.ITransientNotification)32 RemoteViews (android.widget.RemoteViews)30 RemoteException (android.os.RemoteException)24 ApplicationInfo (android.content.pm.ApplicationInfo)17 UserHandle (android.os.UserHandle)17 Date (java.util.Date)16 Uri (android.net.Uri)15 Bundle (android.os.Bundle)15 ComponentName (android.content.ComponentName)13 File (java.io.File)13