代码之家  ›  专栏  ›  技术社区  ›  Attaullah

如何在Android操作系统中隐藏来电对话?

  •  0
  • Attaullah  · 技术社区  · 6 年前

           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);
    

    这里有些截图

    安卓7

    App on Android 7.0

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   nhoxbypass    6 年前

    您可以注册一个窗口焦点更改事件,然后发送 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);
            }
    }
    

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