2011-08-26 110 views
6

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

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

当接到电话时,我的接收器工作良好,但如何我得到当前窗口来覆盖通话屏幕?这是我到目前为止...但我得到一个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

如果您有更好的解决方案,请分享。我也试图做同样的事情。非常感谢您的帮助 – png

回答

2

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

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

那么这个接收器内(检查要处理(振铃电话的状态之后,在电话,挂起来,等。)你应该得到当前窗口(应该是呼叫屏幕),并添加一个视图 当然,如果状态不是你想要处理的状态,请删除视图

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

+0

谢谢,但我怎么会从onRecieve方法中获取当前窗口?我发布了一些我使用过的代码,但得到了classcastexception。 – Pengume