Android - 如何在本机屏幕上显示对话框?
问题描述:
我想知道是否有人可以告诉如何弹出一个对话框屏幕上原生的Android屏幕?Android - 如何在本机屏幕上显示对话框?
我目前有陷阱拨出电话并停止它的应用程序,那么我想弹出,将在拨号画面接管并提醒用户有试图调用已被阻止,让他们有一个对话框对话框中的一些新选项。
我知道有些人会说我应该使用通知,但我意识到这一点,而不是它应该工作的方式,我需要能够在通话被困时弹出一个对话框。
这是我的对话框代码到目前为止
AlertDialog LDialog = new AlertDialog.Builder(context)
.setTitle("Call Blocked")
.setMessage("Call Blocked, reroute call?")
.setPositiveButton("ok", null).create();
LDialog.show();
我相信我一定要以某种方式获取上下文是拨号屏幕?
任何人都可以提供任何帮助和帮助或链接到教程吗?
在此先感谢
答
对于我的应用程序使用的活动与Dialog
主题。 您可以在清单文件中声明的主题:
<activity android:name="PopupActivity"
android:launchMode="singleInstance" android:excludeFromRecents="true"
android:taskAffinity="" android:theme="@android:style/Theme.Dialog" />
- 使用
launcheMode="singleInstance"
和taskAffinity=""
如果您的弹出窗口从主应用程序分离。否则,用户可以点击后退按钮并返回到应用程序的上一个活动。 -
excludeFromRecents="true"
避免您的弹出窗口出现在最近的任务中(长按主页) -
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);
谢谢托马斯,这是一个很好的解决方案 – 2010-01-27 15:21:21
优秀的解决方案,谢谢!为我节省了很多时间! – mDroidd 2012-12-15 22:04:21
我真的爱你tbruyelle!添加taskAffinity =“”解决了自从很长时间以来困扰我的问题! – Daksh 2013-02-11 21:49:20