我希望拦截来电,以阻止来自未存储在通讯录中的号码的所有来电和,以避免默认情况下设置的各种通知电话应用 - 在状态栏中,图标(未接来电数量等)
所有设备都是三星Galaxy Core Duos,因此我将阻止模式作为阻止来自未存储在“联系人”中的号码的所有呼叫的不良方式。 我的主要问题是找到一种方法来禁用(避免)上述通知。我知道我可以清空我的通话记录,而我正在这样做,但通知会保留在状态栏和图标上。话虽如此,但我相信两者都可以解决。
有没有办法为运行Jelly Bean的root设备执行此操作?
由于在这种情况下没有正确使用abortBroadcast()
的方式,因为android.intent.action.PHONE_STATE
未通过有序广播接收(没有系统sendOrderedBroadcast()
来电,就像收到的短信一样,但简单的旧sendBroadcast()
代替),所有接收者必须同时接收这个意图"同时"。
为了使我的目标可能无法实现,据我所知,事情甚至在广播之前就开始发生了。此外,没有任何法律上可接受的"在致电sendBroadcast()
之前发生,正如 this blog post 中详细描述的那样。顺便说一句,这篇文章是在2009年提交的。从那时起,有关这个问题的任何事情发生了变化吗?
有可能使用shell解决这个问题吗?如果是,怎么样?
清空呼叫记录的代码如下:
context.getContentResolver().delete(android.provider.CallLog.Calls.CONTENT_URI, null, null);
我需要权限(例如:WRITE_CALL_LOG
,READ_CONTACTS
,WRITE_CONTACTS
)这是有效的。当我触摸电话应用图标或状态栏通知时,通话记录显示为空。
答案 0 :(得分:0)
我用这段代码解决了它:
Runtime runtime = Runtime.getRuntime();
try
{
runtime.exec("service call phone 5 \n");
}
catch (Exception e)
{
e.printStackTrace();
}
它将通话标记为已结束,而不是将其标记为未通过,并且结束通话不会显示任何类型的通知。
如果5不起作用,请尝试其他数字,如4,6,8等。