编程语言
首页 > 编程语言> > java – 让应用程序在其他app上运行

java – 让应用程序在其他app上运行

作者:互联网

我想创建一个可以在任何应用程序上方打开的活动.

通常情况下,即使活动设置为对话框,当您切换到我的应用程序时,您会看到我的应用程序,并在后台看到启动器:

但是,我希望应用程序将超越任何这样的应用程序:(在photoshop中制作):

我确实看到了这个问题Creating a system overlay window (always on top),但在ICS中,布局没有功能.
此外,我想从我的应用程序给出一个对话框,而不会最小化其他应用程序…

解决方法:

有很多应用程序可以显示浮动视图,例如:airbrowser,LilyPad,Stick it,AirTerm,Smart Taskbar,aircalc ……

无论如何,为了实现这个功能,你必须有一个名为“android.permission.SYSTEM_ALERT_WINDOW”的特殊权限,并使用类似的东西:

final WindowManager.LayoutParams param=new WindowManager.LayoutParams();
param.flags=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
final View view=findViewById(R.id.my_floating_view);
final ViewGroup parent=(ViewGroup)view.getParent();
if(parent!=null)
  parent.removeView(view);
param.format=PixelFormat.RGBA_8888;
param.type=WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
param.gravity=Gravity.TOP|Gravity.LEFT;
param.width=parent!=null?LayoutParams.WRAP_CONTENT:view.getLayoutParams().width;
param.height=parent!=null?LayoutParams.WRAP_CONTENT:view.getLayoutParams().height;
final WindowManager wmgr=(WindowManager)getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
wmgr.addView(view,param);
// TODO handle overlapping title bar and/or action bar
// TODO you must add logic to remove the view
// TODO you must use a special permission to use this method :android.permission.SYSTEM_ALERT_WINDOW
// TODO if you wish to let the view stay when leaving the app, make sure you have a foreground service running.

标签:multitasking,android,java,android-activity,dialog
来源: https://codeday.me/bug/20190928/1826640.html