android弹窗不能手动关闭_Android app(Service)如何在后台随时随地弹出/关闭悬浮窗?...
需求
語音喚醒后在系統任意界面(應用)彈出懸浮窗(定制設備,非手機)。
問題
進程在前臺時沒問題,懸浮窗可以開關,進程轉到后臺以后就不行,即棧頂是其他應用的時候,懸浮窗彈不出,回到自己 app 查看,發現懸浮窗只顯示在自己的 app 里面,無法在最頂層繪制。
失敗嘗試
( x )打開前臺服務
( x )在打開其他應用前先打開懸浮窗,然后根據喚醒狀態改變透明度
( x )分別使用 EventBus/Handler/Thread+Looper 進行嘗試
( x )分別使用 Dialog/WindowManager/開源控件進行嘗試
5.0/6.0/8.0 系統試了都不行,哪位大佬知道這問題怎么解決,能提供調試的思路也好,謝謝
代碼
mView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.float_window, null);
mWindowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
mLayoutParams = new WindowManager.LayoutParams();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
mLayoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}
mLayoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
mLayoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
mLayoutParams.x = 30;
mLayoutParams.y = 30;
mLayoutParams.gravity = Gravity.START | Gravity.BOTTOM;
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
mLayoutParams.format = PixelFormat.TRANSLUCENT;
mWindowManager.addView(mView, mLayoutParams);
總結
以上是生活随笔為你收集整理的android弹窗不能手动关闭_Android app(Service)如何在后台随时随地弹出/关闭悬浮窗?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android记账软件开发源代码_如何开
- 下一篇: 8后淡入淡出没有了_8·30广州岑村uf