Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当应用程序在后台运行时,如何在顶部显示对话框?_Android_Dialog_Android Alertdialog_Android 4.3 Jelly Bean - Fatal编程技术网

Android 当应用程序在后台运行时,如何在顶部显示对话框?

Android 当应用程序在后台运行时,如何在顶部显示对话框?,android,dialog,android-alertdialog,android-4.3-jelly-bean,Android,Dialog,Android Alertdialog,Android 4.3 Jelly Bean,我使用了AlertDialog,但它只在应用程序打开时显示对话框 如果应用程序在后台运行,则AlertDialog不会显示在顶部 例如,时钟应用程序 时间到了,它会在顶部显示对话框或提示窗口 当应用程序在后台运行时,如何在顶部显示对话框???当应用程序在后台运行时,您可以显示系统级警报。考虑下面的代码来显示这样的警报,例如 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

我使用了AlertDialog,但它只在应用程序打开时显示对话框

如果应用程序在后台运行,则AlertDialog不会显示在顶部

例如,时钟应用程序

时间到了,它会在顶部显示对话框或提示窗口


当应用程序在后台运行时,如何在顶部显示对话框???

当应用程序在后台运行时,您可以显示系统级警报。考虑下面的代码来显示这样的警报,例如

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
                        | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSPARENT);

        params.height = WindowManager.LayoutParams.MATCH_PARENT;
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.format = PixelFormat.TRANSLUCENT;

        params.gravity = Gravity.TOP;

        LinearLayout ly = new LinearLayout(context);
        ly.setBackgroundColor(Color.BLACK);
        ly.setOrientation(LinearLayout.VERTICAL);

        ImageView iv = new ImageView(context);
        iv.setImageResource(R.drawable.ic_launcher);

        ly.addView(iv);

        TextView tv1 = new TextView(context);
        tv1.setWidth(params.width);
        tv1.setBackgroundColor(Color.BLUE);

        ly.addView(tv1);

        wm.addView(ly, params);
  • 在清单中添加权限

    使用权限android:name=“android.permission.SYSTEM\u ALERT\u WINDOW”


  • 我知道这有点迟,但由于没有被接受的答案,你可以考虑这个问题。

    您不必创建自定义视图并将其添加到窗口中。如果您的目标是只显示一个常规对话框,则可以执行以下操作

    创建一个服务类,并通过将其写入AndroidManifest.xml让应用程序了解该服务。有点像

    <service android:name="your.package.name.PopupService"/>
    
    }

    当你想显示对话框时,只需调用服务,比如

    Intent intent = new Intent(MainActivity.this, PopupService.class);
    intent.putExtra("msg","Test Message");
    startService(intent);
    
    还有一件事,只需将此权限添加到AndroidManifest.xml

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    
    
    

    希望这有帮助:)

    您只能在活动顶部显示对话框。没有活动,对话无法独立显示。。。如果你想显示对话框,创建活动并将主题设置为@android/theme.dialogo当应用程序在后台运行时,顶部是否可以显示其他对话框或提示窗口?我不明白你说的是什么。请记住:在安卓2.3或更低版本中,或在某些设备中,甚至向下拖动通知面板都会出现在该窗口后面!它不是仅用于系统级警报吗?好吧,除非应用程序想通知用户有关系统级信息,否则在应用程序中使用它是不好的做法。当应用程序在后台运行时,是否有其他对话框或提示窗口可以显示在顶部??
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>