0

我正在尝试以编程方式从状态栏中清除未接来电通知,但无法实现这一点。我将不胜感激。

编辑:似乎SDK不允许我直接这样做。你们能建议我任何解决方法吗?谢谢!

4

3 回答 3

4

您只能删除Notification您自己提出的。您不能删除Notification由另一个应用程序引发的。对不起!

于 2011-11-20T23:16:38.693 回答
0

可以帮助你。尤其是这一段可能包括您正在寻找的内容;

要在用户从通知窗口中选择状态栏通知时清除它,请将FLAG_AUTO_CANCEL标志添加到您的通知中。您也可以使用 手动清除它cancel(int),将通知 ID 传递给它,或者使用 清除所有通知cancelAll()

于 2011-11-21T00:33:00.290 回答
0

实现您想要的唯一“合法”但极其丑陋且通常无用的方法是将通话记录显示给用户。我的意思是字面上的展示(变得视觉化,获得焦点)。如果您想这样做,请按以下步骤操作:

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;
}

这种混乱背后的原因是负责呼叫记录的应用程序使用缓存值。您需要以某种方式通知这些应用程序呼叫日志已更改(可见意味着也已更改)并且应该对其进行更新。如果所有设备上的所有此类应用程序都能接收广播以进行刷新,那就太好了,但据我所知,情况并非如此。

于 2014-10-25T15:01:21.487 回答