Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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 Activity_Android Linearlayout - Fatal编程技术网

Android 在另一个应用程序中显示对话框,并将其置于其他应用程序的顶部

Android 在另一个应用程序中显示对话框,并将其置于其他应用程序的顶部,android,dialog,android-activity,android-linearlayout,Android,Dialog,Android Activity,Android Linearlayout,我使用aidl将数据从一个应用程序发送到另一个应用程序。发送数据的应用程序在前面,接收数据的应用程序在后台向用户显示一个对话框。现在的问题是,在我切换回那个应用程序之前,对话框是不可见的。不管怎样,我都可以在不切换回其他应用程序的情况下显示对话框。就像安卓系统的电池电量不足对话框一样,一切都在上面 ActivityManager manager=(ActivityManager)getApplicationContext().getSystemService(ACTIVITY_服务); Acti

我使用aidl将数据从一个应用程序发送到另一个应用程序。发送数据的应用程序在前面,接收数据的应用程序在后台向用户显示一个对话框。现在的问题是,在我切换回那个应用程序之前,对话框是不可见的。不管怎样,我都可以在不切换回其他应用程序的情况下显示对话框。就像安卓系统的电池电量不足对话框一样,一切都在上面

ActivityManager manager=(ActivityManager)getApplicationContext().getSystemService(ACTIVITY_服务);
ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE);

// get the context from the currently running task
List< ActivityManager.RunningTaskInfo > taskInfo = manager.getRunningTasks(1);
Context context = taskInfo.get(0).topActivity;
//从当前运行的任务中获取上下文 列出taskInfo=manager.getRunningTasks(1); Context=taskInfo.get(0).topActivity;
我不太确定这是否真的适用于不是来自应用程序的活动,但在将其添加为答案之前,我目前还没有自己测试它的资源。
如果你真的能够用它检索当前最热门的活动,那么值得一试。我只希望我的内存给了我正确的语法…

您可以使用
WindowManager
实现这一点,接收数据的应用程序应该有
后台服务。如果您正在发布广播事件以将数据传递给其他应用程序,则当应用程序收到数据时,启动服务以显示该对话框

对话框可以是自定义对话框,需要将其作为视图添加到
WindowManager

     WindowManager  windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
   windowManager.addView(dialogView, params);
好的,这是一个带有自定义对话框的示例。您可以使用默认的
AlertDialog

当应用程序收到事件时,启动服务,并在调用
onStartCommand
时,在
service
中显示对话框

按照以下步骤操作

获取WindowManager的实例

     WindowManager  windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
   windowManager.addView(dialogView, params);
对自定义视图进行充气

     View dialogView = View.inflate(getBaseContext(),R.layout.dialog_layout,null);
将侦听器添加到视图中

  dialogView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                windowManager.removeView(dialogView);
                dialogView = null;
            }
        });
设置窗口管理器参数

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,
                PixelFormat.TRANSLUCENT);

     params.gravity = Gravity.CENTER | Gravity.CENTER;
将视图添加到
窗口管理器

     WindowManager  windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
   windowManager.addView(dialogView, params);
同时在清单中添加
SYSTEM\u ALERT\u窗口
权限

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

实际上,您需要将以下权限添加到清单文件中以实现所需的功能:
android.permission.SYSTEM\u警报\u窗口

以下StackOverflow线程的答案提供了一个如何执行此操作的示例: