2016-01-04 120 views
1

我想要替换传出屏幕并通过该自定义屏幕拨打电话。我成功地带来了自定义屏幕,但我无法拨打电话。如果我使用ACTION.CALL,则它会调用默认传出屏幕。从自定义传出屏幕拨打电话

public class OutgoingCallBroadcastReciver extends BroadcastReceiver { 
    Context c; 
    public OutgoingCallBroadcastReciver() { 

    } 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 
     final String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     c=context; 
     setResultData(null); 
     setResultData(number); 
     callActionHandler.postDelayed(runRingingActivity, 1000); 

    } 

    Handler callActionHandler = new Handler(); 
    Runnable runRingingActivity = new Runnable(){ 

     @Override 
     public void run() 
     { 
      Intent intentPhoneCall = new Intent(c, OutgoingScreen.class); 
      intentPhoneCall.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intentPhoneCall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      c.startActivity(intentPhoneCall); 
     } 

    }; 
} 
+0

[如何在Android手机中制作自己的自定义拨号程序]的可能重复(http://stackoverflow.com/questions/10303138/how-to-make-my-own-custom-dialer-in-an- Android手机) – hazardous

回答

0

对于传出呼叫,我会自定义工作并在清单中创建传出接收者的自定义权限。

我在使用处理程序延迟后调用了该活动。

希望我会为你工作。

请检查以下代码。

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    mcontext = context; 
    setResultData(null); 
    dialphonenumber = getResultData(); 
    if dialphonenumber == null) 
    { 
     dialphonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
    } 
    setResultData(dialphonenumber); 
    callActionHandler.postDelayed(runRingingActivity, 1000); 
} 


Handler callActionHandler = new Handler(); 
Runnable runRingingActivity = new Runnable() 
{ 
    @Override 
    public void run() 
    { 

     Intent intentPhoneCall = new Intent(mcontext, OutgoingCallActivity.class); 
     intentPhoneCall.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     intentPhoneCall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     mcontext.startActivity(intentPhoneCall); 
    } 
}; 

希望它能为你工作。

让我知道你是否有任何问题。

+0

谢谢vatsal我完成了这一点。但现在我在传入屏幕上面临问题。我给了1秒的延迟,但它不能覆盖默认屏幕。它在它后面打开。我在xolo手机上运行它。 –