Уведомление о статусной строке Android: сделайте его недоступным для очистки и верните его в приложение (не запускайте новый экземпляр) - PullRequest
7 голосов
/ 29 июля 2011

Я занимаюсь разработкой приложения для Android и хочу получить уведомление в строке состояния, которое не может быть удалено пользователем.Кто-нибудь знает как это сделать?Я видел их в таких приложениях, как Skimble, где при использовании приложения появляется неочищаемое уведомление.

Кроме того, я бы хотел, чтобы, когда пользователь щелкает / нажимает на уведомление, я хотел, чтобы оно возвращалось к экземпляру приложения.это уже работает.Прямо сейчас начинается новый экземпляр.Опять как приложение Skimble, я просто хочу вернуться к уже запущенному экземпляру приложения.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 29 сентября 2014

Вот решение для NotificationCompat.Builder

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle("MyApp")
        .setContentText("MyMsg")
        .setOngoing(true);

Подробнее в Документах Google .

4 голосов
/ 24 сентября 2011

Я нашел решение этой проблемы.Я использовал FLAG_ONGOING_EVENT, чтобы уведомление сохранялось.Вот код:

  String ns = Context.NOTIFICATION_SERVICE;
  NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

    int icon = R.drawable.mypic;
    long when = System.currentTimeMillis();
    Notification notification = new Notification(icon, tickerText, when);
    notification.flags = Notification.FLAG_ONGOING_EVENT;

    Context context = getApplicationContext();
    CharSequence contentTitle = "Title Text";
    CharSequence contentText = "Content text.";

    Intent intent = new Intent(this, MyClass.class); 
    intent.setAction("android.intent.action.MAIN"); 
    intent.addCategory("android.intent.category.LAUNCHER"); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

    final int HELLO_ID = 1;
    mNotificationManager.notify(HELLO_ID, notification);
0 голосов
/ 02 октября 2012

tification.setLatestEventInfo устарела, поэтому вы должны использовать Notification.builder, а если вы используете API версии 2.X и ниже, вы должны использовать NotificationComacpt.Builder, и это неприменимо, и я не смог сделать свое уведомление оставленным. поэтому я использовал setDeleteIntent и указал на ту же активность, а при возобновлении просто вызовите блок кода, который показывает ваше уведомление. Так что это своего рода работа.

...