如何隐藏/取消默认的来电屏幕

5

我目前正在拦截一个电话并将其转发到我的自定义“oncallscreen”活动。但是,在到达我的屏幕之前,它会闪现到默认的“oncallscreen”。如何隐藏/取消这个屏幕,以便在接收电话时只显示我的定制屏幕。

我目前正在拦截一个电话并将其转发到我的自定义“oncallscreen”活动。但是,在到达我的屏幕之前,它会闪现到默认的“oncallscreen”。如何隐藏/取消这个屏幕,以便在接收电话时只显示我的定制屏幕。
@Override
public void onReceive(Context context, Intent intent) {
    Bundle extras = intent.getExtras();
    if (extras != null) {
        String state = extras.getString(TelephonyManager.EXTRA_STATE);
        Log.w("DEBUG", state);
        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
            String phoneNumber = extras
                    .getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
1个回答

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

1
不确定以前是否有效,但在Android 4.1.2中无法工作 - PHONE_STATE广播是非有序的,因此当尝试中止广播时会出现错误,因为您无法中止非有序广播。 - Eric Brynsvold
接收传入呼叫广播的最高优先级是什么。 - Vikrant_Dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接