Android – 如何通过本机屏幕显示对话框?

我想知道是否有人可以告诉如果popup一个对话框屏幕上原生的Android屏幕?

我目前有一个应用程序陷阱传出的电话,并停止它,然后我想popup一个对话框,将接pipe从拨号屏幕,并提醒用户,试图打电话已被阻止,并允许他们有一些新的select对话框。

我知道有些人会说我应该使用通知,但是我意识到这一点,而不是它应该工作的方式,我需要能够在通话被困时popup一个对话框。

这是我迄今为止的对话框代码

AlertDialog LDialog = new AlertDialog.Builder(context) .setTitle("Call Blocked") .setMessage("Call Blocked, reroute call?") .setPositiveButton("ok", null).create(); LDialog.show(); 

我认为我不得不以某种方式获得拨号器屏幕的上下文?

任何人都可以提供任何帮助和帮助或链接到教程?

提前致谢

Solutions Collecting From Web of "Android – 如何通过本机屏幕显示对话框?"

对于我的应用程序,我使用了一个Dialog主题的活动。 您可以在清单文件中声明主题:

 <activity android:name="PopupActivity" android:launchMode="singleInstance" android:excludeFromRecents="true" android:taskAffinity="" android:theme="@android:style/Theme.Dialog" /> 
  • 如果popup窗口与主应用程序分离,请使用launcheMode="singleInstance"taskAffinity="" 。 否则,用户可以点击后退button并返回到应用程序的上一个活动。
  • excludeFromRecents="true"以避免popup窗口出现在最近的任务(长按主页)
  • theme="@android:style/Theme.Dialog"设置对话框主题。

如何获得相当于launchMode = singleTask的代码

我还没有看到如何以编程方式设置这些标志的明确解释,所以我将在这里包括我的结果。 tldr:你必须设置FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_MULTIPLE_TASK。

如果您直接从您的应用程序启动此应用程序,您的对话框将显示在应用程序的最后一个活动的顶部。 但是,如果您使用AlarmManager的PendingIntent广播来启动“对话框”,那么您有时间切换到另一个应用程序,以便您可以看到“对话框”将出现在另一个应用程序上,如果样式设置得适当,就在它后面

显然,人们应该负责在适当的时候在其他应用上显示对话框。

 public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // you have to set these flags here where you receive the broadcast // NOT in the code where you created your pendingIntent Intent scheduledIntent = new Intent(context, AlertAlarmActivity.class); scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); context.startActivity(scheduledIntent);