覆盖来电屏幕?

时间:2011-08-26 20:55:55

标签: android

您好我想知道是否有办法覆盖来电屏幕以添加更多功能?如果是这样,你可以指出我正确的方向或提供一些示例代码?

----------------------------------------------- ---编辑:--------------------------

当呼叫进入时,我的接收器工作正常但是如何让当前窗口覆盖呼叫屏幕?这是我到目前为止所得到的...但是我得到一个classCastException试图从上下文转换为活动,我想不出任何其他方式来访问窗口。

@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);
            Log.w("DEBUG", "-------------------------------------------------- Broadcast Received");
            if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                String phoneNumber = extras
                        .getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
                Log.w("DEBUG", phoneNumber);
                Activity activity = (Activity)context.getApplicationContext();
                Window window = activity.getParent().getWindow();
                window.addContentView(window.findViewById(R.layout.textalertbuttonview),null);
                Log.w("DEBUG", "------------------------Button Added");

            }
        }
        else {
            Log.w("DEBUG", "---------------------------------------------------no Extras");
        }
    }

----------------------------------------------- ---编辑2:--------------------------

在一些研究之后,我实际上可以将元素添加到实际的来电屏幕中。所以我将不得不制作自己的视图并覆盖来电屏幕。但我仍然对想法持开放态度......我看到了来电加号,但无法找到该项目的源代码。

1 个答案:

答案 0 :(得分:2)

一般来说: 您可以设置BroadcastReceiver侦听PHONE_STATE:

<receiver android:name=".CallsBroadcastReceiver" android:enabled="true">
    <intent-filter>
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>

然后在这个接收器里面(在检查你想要处理的手机的状态(响铃,通话,挂断等)之后你应该得到当前窗口(应该是通话屏幕)并添加一个视图它。 当然,一旦状态不是您想要处理的状态,就删除视图。

非常一般,但这就是主意。

相关问题