拦截Android的OS来电屏幕并进行replace

我想拦截Android的操作系统来电屏幕,并将其replace为我的应用程序的来电屏幕。 但是,没有API可以这样做,但是我确信这是有可能的。 我所说的公司是:Adaffix(Yellix),Vringo,WhitePages来电显示等等。 当呼叫到达时,它们都干净地replace了操作系统的来电屏幕(没有延迟,没有毛刺,它总是在工作)。

我能够find一个部分的解决scheme,但这种解决scheme是不稳定的,因为有时它显示我的应用程序来电屏幕,有时操作系统来电屏幕。 每个人都以不同的方式反应。

你有什么主意吗?

Solutions Collecting From Web of "拦截Android的OS来电屏幕并进行replace"

当你得到android.intent.action.PHONE_STATE的时候,你将不得不用一个控件覆盖本地屏幕(也许是一个对话框)。

您必须为动作android.intent.action.PHONE_STATE注册一个BroadcastReceiver。

接收意图将具有variablesTelephonyManager.EXTRA_STATE_RINGING,其将具有当前状态。

让我知道!

您需要以最高的优先级拦截广播android.intent.action.PHONE_STATE ,然后如果在您的BroadcastReceiver.onReceive()您将通过BroadcastReceiver.abortBroadcast()取消广播,您将能够停止默认的来电屏幕显示,因为默认应用程序不会收到来电广播。 之后,您可以自由展示自己的Activity

至less有同样的策略与传入短信“ – 我曾经如上所述做。

我想你可能已经完成了95%的工作。 你的屏幕没有出现问题,但系统来电可以这样解决:

在系统的默认接收器之前,活动是否可以收到一个无序的广播(来电)意图?