Как убрать уведомление о пропущенном звонке из строки состояния - PullRequest
0 голосов
/ 21 ноября 2011

Я пытаюсь удалить уведомления о пропущенных вызовах из строки состояния программным способом, но не могу этого сделать. Я буду признателен за любую помощь.

редактирование: Похоже, SDK не позволяет мне сделать это напрямую. Ребята, можете ли вы предложить мне какой-нибудь обходной путь? Спасибо!

Ответы [ 3 ]

4 голосов
/ 21 ноября 2011

Вы можете удалить только Notification, который вы подняли самостоятельно. Вы не можете удалить Notification, поднятый другим приложением. Извините!

0 голосов
/ 25 октября 2014

Единственный «легальный», но крайне уродливый и, как правило, бесполезный способ добиться того, чего вы хотите, - это показать Журнал вызовов пользователю.И я имею в виду буквально шоу (становится визуальным, получает фокус).Если вы хотите сделать это, вот как:

public static boolean showCallLog(Context context)
{
    try
    {
        Intent showCallLog = new Intent();
        showCallLog.setAction(Intent.ACTION_VIEW);
        showCallLog.setType(android.provider.CallLog.Calls.CONTENT_TYPE);
        context.startActivity(showCallLog);
        return true;
    }
    catch (Exception e)
    {
        Log.d("Couldn't show call log.", e.getMessage());
    }
    return false;
}

Причина этого беспорядка заключается в том, что приложения, отвечающие за ведение журнала вызовов, используют кэшированные значения.Вам нужно как-то уведомить те приложения, что журнал вызовов изменился (увиденное означает, что также изменилось) и что он должен обновить его.Было бы неплохо, если бы все такие приложения на всех устройствах получали трансляцию для обновления, но, насколько я знаю, это не так.

0 голосов
/ 21 ноября 2011

Это может помочь вам.Особенно этот параграф может включать в себя то, что вы ищете;

Чтобы очистить уведомление в строке состояния, когда пользователь выбирает его в окне уведомлений, добавьте флаг FLAG_AUTO_CANCEL к своему уведомлению.Вы также можете удалить его вручную с помощью cancel(int), передав ему идентификатор уведомления, или удалить все ваши уведомления с помощью cancelAll().

...