2013-10-07 43 views
1

我想在本機傳出呼叫者屏幕上啓動我的自定義屏幕,該屏幕可能包含呼叫者的全屏幕圖像以及某些按鈕,例如拒絕呼叫等操作。使用此功能,我可以打電話,但將我重定向到本機來電屏幕...用自定義屏幕替換本地傳出呼叫屏幕android

如何replace\override我的自定義屏幕屏幕的默認呼叫屏幕?

startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phonenumber))); 
public class GetOutgoingNUmber extends BroadcastReceiver { 


final static String INTENT_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    Log.v("DileBroadCastReceiver","In onReceive()"); 

    if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       Intent i = new Intent(context, OutGoingScreen.class); 
       i.putExtras(intent); 
       i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
       context.startActivity(i); 
      } 
     }, 1000); 
} 

這裏OutGoingScreen是顯示屏幕傳出

public class OutGoingScreen extends Activity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.outgoingscreen); 

    } 
} 

現在的問題是它顯示我的幾毫秒屏幕,再次顯示本機屏幕....?

回答

2

寫出呼出

public class OutgoingCallReceiver extends BroadcastReceiver { 
@Override 
    public void onReceive(final Context context, final Intent intent) { 
     //Write intent for yout page 
    } 
} 

一個接收器添加這些的體現

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

<receiver android:name=.OutgoingCallReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
    </intent-filter> 
</receiver> 

以下主題添加到活動主題

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 

打開你的意圖在1秒鐘後bcoz原傳出呼叫屏幕需要800毫秒才能打開,因此您需要重新放置該屏幕,因此您必須致電我在800ms之後。 它適合我。

+0

我已經編輯了我的代碼。謝謝。但仍然沒有得到我的屏幕。 – Aniket

+0

如何推遲?我應該使用Runnable使用Handler postDelayed()方法.... – Aniket

+0

是的是的,你必須使用runnable –

0

最好的方法是開發自己的手機應用程序,並期望用戶將其設置爲撥打電話的默認應用程序。

編輯:

添加它接受ACTION_DIAL意圖的活動,並有數字小鍵盤,然後一旦用戶輸入的電話號碼,你可以解僱與將調用手機自帶的應用程序中的電話號碼ACTION_CALL意圖。通過這種方式,用戶必須選擇您的應用程序設置爲ACTION_DIAL意圖的默認應用程序。

+0

感謝您的回覆。但實際上我已經完成了我的整個應用程序現在我留下的東西是獲得自定義傳出屏幕,因此只有創建整個手機應用程序將花費我很多時間,有沒有其他選擇?再次感謝您的建議。 – Aniket

+0

你想讓屏幕做什麼?打電話? –

+0

是的,我想讓該屏幕撥打電話。 – Aniket

0

您不需要創建單獨的應用程序。 最終,您只是想要處理新的傳出呼叫請求,因此請創建BroadcastReceiver來收聽ACTION_NEW_OUTGOING_CALL的事件,並創建一個Activity以調用該事件。

您需要在清單文件中指定關於PROCESS_OUTGOING_CALLS的權限。

看一看一些引用

handling-phone-call-requests-right-way

android-dialer-application

我希望這會有所幫助!

+0

我已編輯相應的代碼。謝謝。但仍然沒有得到我的屏幕。 – Aniket

+0

謝謝你的回覆,我已經更新了我的問題...你能幫我解決這個問題。 – Aniket