我们正在使用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);
}
}
答案 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延迟一两秒似乎使其更有可能真正在手机屏幕上闪现。