2011-08-26 116 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