您好我想知道是否有办法覆盖来电屏幕以添加更多功能?如果是这样,你可以指出我正确的方向或提供一些示例代码?
----------------------------------------------- ---编辑:--------------------------
当呼叫进入时,我的接收器工作正常但是如何让当前窗口覆盖呼叫屏幕?这是我到目前为止所得到的...但是我得到一个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:--------------------------
在一些研究之后,我实际上可以将元素添加到实际的来电屏幕中。所以我将不得不制作自己的视图并覆盖来电屏幕。但我仍然对想法持开放态度......我看到了来电加号,但无法找到该项目的源代码。
答案 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>
然后在这个接收器里面(在检查你想要处理的手机的状态(响铃,通话,挂断等)之后你应该得到当前窗口(应该是通话屏幕)并添加一个视图它。 当然,一旦状态不是您想要处理的状态,就删除视图。
非常一般,但这就是主意。