您可以使用 WindowManager 来实现这一点,接收数据的应用程序应该有一个 background service 。如果您正在发布广播事件以将数据传递给其他应用程序,那么当应用程序接收到数据时,启动一个服务以显示对话框。
dialog 可以是自定义对话框,需要作为视图添加到WindowManager
好的,这是一个带有自定义对话框的示例。您可以使用默认的AlertDialog 尝试相同的方法
当应用程序接收到事件时,启动服务并在Service 中调用onStartCommand 时,显示对话框。
按照这些步骤.....
获取WindowManager的实例
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
膨胀自定义视图
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;
}
});
设置Window manager params
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;
将视图添加到Window Manager
windowManager.addView(dialogView, params);
还要在清单中添加SYSTEM_ALERT_WINDOW 权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />