在拨打电话时将电话屏幕推入后台

时间:2013-04-08 13:16:47

标签: android override phone-call

我们正在使用Android应用程序进行一些评估,当评估员到达现场时,他们需要在办公室通话时登录。这是一个参考号码,我真的希望能够在电话显示屏上显示它们。

最完美的是一个对话框,显示拨号屏幕顶部的数字。

我试过这样做,但它只是超过了对话框并显示了调用屏幕。无论如何将拨号器推到后台并继续向用户显示对话框?

到目前为止我所拥有的:

public void makecall(View view){ 
    try {
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:NUMBER"));
        startActivity(callIntent);
        Toast.makeText(getApplicationContext(), "TEST",Toast.LENGTH_LONG).show(); 
        AlertDialog.Builder adb = new AlertDialog.Builder(this); 
        adb.setTitle("Alert"); 
        adb.setMessage("Client Reference Blah Blah");
        adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 

            } 
        });
        adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
                dialog.cancel(); 
            }
        });
        adb.show();         
    } catch (ActivityNotFoundException activityException) {
        Throwable e = null;
        Log.e("helloandroid dialing example", "Callfailed", e); 
    }
}

1 个答案:

答案 0 :(得分:4)

我认为你需要使用一个活动来显示呼叫屏幕顶部的内容。一个对话框将无效,因为您从此活动中显示了该对话框,但是一旦您启动了呼叫意图,此活动将不再位于堆栈顶部。

请在此处查看答案:Android - How to display a dialog over a native screen?

如何将您的(新)活动设置为看起来像对话框,这将为您提供与之相同的视觉效果。

使用该问题中显示的参数创建新活动后,您可以在启动callIntent

后使用startActivity启动它
public void makecall(View view){ 
    try {
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:NUMBER"));
        startActivity(callIntent);
        Toast.makeText(this, "TEST",Toast.LENGTH_LONG).show(); 

        Runnable showDialogRun = new Runnable() {
            public void run(){
                Intent showDialogIntent = new Intent(this, DialogActivity.class);
                startActivity(showDialogIntent);
            }
        };
        Handler h = new Handler();
        h.postDelayed(showDialogRun, 2000);
    } catch (ActivityNotFoundException activityException) {
        Throwable e = null;
        Log.e("helloandroid dialing example", "Callfailed", e); 
    }
}

将对话框startActivity延迟一两秒似乎使其更有可能真正在手机屏幕上闪现。