如何在Android O中的活动中隐藏“来电”对话框?

时间:2018-08-26 02:42:17

标签: android android-screen-support android-overlay

在Android 7上,我的“来电储物柜”应用程序运行良好,并且我隐藏了“来电”对话框,但在Android 8来电对话框中始终显示在“活动”上方。

       int LAYOUT_FLAG;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        } else {
            LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
        }
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT, LAYOUT_FLAG, 263464,
                WindowManager.LayoutParams.WRAP_CONTENT);

        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        winMangr = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
        getWindow().setAttributes(params);
        wraprView = new RelativeLayout(getBaseContext());
        View.inflate(this, mLayout, wraprView);
        winMangr.addView(wraprView, params);

这里有一些屏幕截图

Android 7

App on Android 7.0

Android 8

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以注册窗口焦点更改事件,然后发送android.intent.action.CLOSE_SYSTEM_DIALOGS广播以关闭所有系统对话框。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);

        if (! hasFocus) {
            Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
            sendBroadcast(closeDialog);
        }
}

但是请注意,这样做将强制关闭所有系统对话框(包括“关机/重新启动”对话框),从而阻止用户在您的应用程序运行时关闭手机。