2

我们正在使用 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); 
    }
}
4

1 回答 1

4

我认为您需要使用活动在通话屏幕顶部显示某些内容。对话框将不起作用,因为您正在从您发布的此活动中显示它,但是一旦您启动调用意图,此活动将不再位于堆栈顶部。

在此处查看答案:Android - 如何在本机屏幕上显示对话框?

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

使用该问题中显示的参数创建新活动后,您可以在启动 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 延迟一两秒似乎使它更有可能实际飞溅在手机屏幕上。

于 2013-04-08T13:34:07.250 回答