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